详解Nginx缓存静态资源

一、nginx静态资源访问完整配置

想要让Nginx缓存静态资源,首先需要进行Nginx配置。以下是Nginx静态资源访问完整配置的示例代码:

location /static/ {
    root /data/www;
    expires 7d;
}

该配置将被访问的URL路径设置为/static/,将静态文件存储在/data/www目录下,过期时间为7天。需要注意的是,该配置仅适用于静态资源文件,如CSS、JS、图片等。对于动态资源文件,需要进行其他配置。

二、nginx资源静态

Nginx可以将动态资源文件转化为静态资源文件,加快文件的读取速度。以下是Nginx资源静态的示例代码:

location / {
    proxy_pass http://backend/;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
    proxy_cache_valid 404 1m;
}

首先,访问的URL路径被设置为根路径。然后,将动态资源传输给后端服务器,将该资源的相关信息作为缓存键,将缓存保留为60分钟,404错误的缓存保留为1分钟。

三、nginx代理静态资源

当Nginx作为代理服务器时,可以代理静态资源,以加快访问速度。以下是Nginx代理静态资源的示例代码:

location /static/ {
    proxy_pass http://backend/static/;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 3;
    proxy_cache_valid 200 60m;
}

该配置将/static/路径下的静态资源文件代理给后端服务器,并设置了缓存刷新机制。当用户使用Ctrl+F5刷新页面时,Nginx会请求更新缓存。

四、nginx缓存静态文件

为了进一步加快访问速度,Nginx可以将静态文件缓存到本地。以下是Nginx缓存静态文件的示例代码:

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m;
    server {
        location /static/ {
            proxy_pass http://backend/static/;
            proxy_cache static_cache;
            proxy_cache_valid 200 60m;
        }
    }
}

首先,在http块中设置Nginx的缓存路径和缓存区域。然后,在server块中配置缓存使用的区域和缓存的有效期。

五、nginx静态资源跨域

有时候,静态资源文件需要跨域使用,这时就需要配置Nginx进行跨域访问。以下是Nginx静态资源跨域的示例代码:

location /static/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    proxy_pass http://backend/static/;
}

在设置URL路径后,配置Access-Control-Allow-Origin和Access-Control-Allow-Methods头,允许跨域HTTP访问。最后,将静态资源代理给后端服务器。

六、nginx静态资源缓存CDN

为了更快地加载资源,可以使用CDN来缓存静态资源。以下是Nginx静态资源缓存CDN的示例代码:

location /static/ {
    expires 7d;
    add_header Cache-Control "public";
    add_header X-Proxy-Cache $upstream_cache_status;
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_pass http://cdn.example.com/static/;
}

首先在location块中设置expires,将资源缓存在客户端。然后,在头部设置Cache-Control和X-Proxy-Cache。接下来是配置缓存路径、缓存键和缓存有效期。最后将静态资源代理给CDN服务。

七、nginx静态缓存配置

为了确保静态资源文件始终被缓存,可以使用Nginx静态缓存配置。以下是Nginx静态缓存配置的示例代码:

http {
    proxy_cache_path /data/nginx/cache/ keys_zone=one:10m;
    server {
        location / {
            proxy_cache one;
            proxy_cache_valid 200 1d;
        }
    }
}

在http块中设置Nginx的缓存路径和区域。然后在server块中,配置Nginx使用缓存并设置缓存有效期。

八、nginx不缓存静态资源

有时候,不希望缓存静态资源。以下是Nginx不缓存静态资源的示例代码:

location /static/ {
    proxy_no_cache 1;
    proxy_cache_bypass 1;
    proxy_pass http://backend/static/;
}

在设置URL路径后,配置不缓存静态资源的选项,不带缓存地将静态资源传给后端服务器。

九、springboot静态资源缓存配置

对于使用Spring Boot的应用程序,也可以配置静态资源缓存。以下是Spring Boot静态资源缓存配置的示例代码:

@Configuration
public class WebMvcConfg implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/")
                .setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS));
    }
}

在WebMvcConfigurer中,配置需要被缓存的静态资源路径和缓存有效期。

总结

Nginx缓存静态资源可以大大提高资源加载速度,同时也能减轻服务器的负担。根据不同的需求,可以进行不同的配置,达到最佳的效果。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/278424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-19 13:22
下一篇 2024-12-19 13:22

相关推荐

  • Python飞机大战中文字资源分析

    Python飞机大战是一款经典的飞行射击游戏,在游戏过程中,玩家需要控制一架飞机不断消灭敌人,生存到最后。该游戏使用Python语言编写,其中涉及到的文字资源对游戏的整体体验有重要…

    编程 2025-04-29
  • Centos7配置静态ip

    本文将详细阐述如何在Centos7系统中配置静态ip。 一、查看网络接口 在配置静态ip之前,我们首先需要查看系统中的网络接口,以确定我们需要配置的网卡是哪一个。 ifconfig…

    编程 2025-04-29
  • 主存属于可抢占资源吗?

    主存(内存)一般被视为非可抢占资源,即进程已经分配内存后,操作系统不会轻易将其从该进程中抢占。然而在一些情况下,主存也可以被视为可抢占资源。 一、 内存分配 在大多数情况下,内存是…

    编程 2025-04-29
  • Python 数据缓存及其应用

    本文将为大家详细介绍Python数据缓存,并提供相关代码示例。 一、Python 数据缓存基础概念 Python 是一种解释型语言,每次执行完一条语句后就会将内存中的结果清空,如果…

    编程 2025-04-29
  • Python缓存图片的处理方式

    本文将从多个方面详细阐述Python缓存图片的处理方式,包括缓存原理、缓存框架、缓存策略、缓存更新和缓存清除等方面。 一、缓存原理 缓存是一种提高应用程序性能的技术,在网络应用中流…

    编程 2025-04-29
  • 从零入坑嵌入式及相关优质资源推荐

    对于一个全能编程开发工程师而言,嵌入式开发是不可忽视的领域。本文将从入坑嵌入式的不同方面进行详细阐述,并推荐一些优质资源。 一、嵌入式开发简介 嵌入式开发是指将多种软硬件技术融合在…

    编程 2025-04-28
  • Python中通过对象不能调用类方法和静态方法的解析

    当我们在使用Python编写程序时,可能会遇到通过对象调用类方法和静态方法失败的问题,那么这是为什么呢?接下来,我们将从多个方面对这个问题进行详细解析。 一、类方法和静态方法的定义…

    编程 2025-04-27
  • Apache伪静态配置Java

    本文将会从多个角度阐述如何在Apache中正确伪装Java应用程序,实现URL的静态化,提高网站的SEO优化和性能。以下是相关的配置和代码实例。 一、RewriteEngine的配…

    编程 2025-04-27
  • Java图片缓存的实现与优化

    Java中的图片缓存是Web开发中常用的技术,它可以提高网页的加载速度和用户体验。本文将从以下三个方面对Java图片缓存进行详细阐述: 一、图片缓存的基本实现 图片缓存技术是指将一…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25

发表回复

登录后才能评论