Nginx缓存清理配置,优化网站静态资源更新

引言:
在网站开发过程中,经常会有静态资源的更新,如CSS、JavaScript和图片等。然而,由于浏览器的缓存机制,访问者可能无法立即获取到最新版本的静态资源。为了解决这个问题,我们可以使用Nginx进行缓存清理配置,以优化网站静态资源的更新。

一、Nginx缓存配置
首先,我们需要在Nginx的配置文件nginx.conf中添加以下指令来配置缓存相关的设置:

http {
    ...
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=cache_zone:10m max_size=10g inactive=60m;
    ...

    server {
        ...
        location ~* .(css|js|png|jpg|jpeg|gif|ico)$ {
            expires 30d;
            add_header Pragma public;
            add_header Cache-Control "public";
            proxy_cache cache_zone;
            proxy_cache_key $scheme$proxy_host$uri$is_args$args;
            proxy_cache_valid 200 301 302 404 1d;
        }
        ...
    }
    ...
}
登录后复制
  1. proxy_cache_path:设置缓存目录的路径。levels=1:2表示在缓存目录下使用两级子目录来存储缓存文件,这可以提高文件的查找速度。keys_zone为缓存区域的名称,10m表示分配10MB的内存用于缓存索引。max_size表示缓存文件的最大大小,inactive表示在指定时间没有被访问时,缓存文件会被删除。
  2. location:用于匹配需要被缓存的静态资源文件。在此例中,使用正则表达式匹配CSS、JavaScript、图片等文件,并设置缓存的过期时间为30天。
  3. add_header:添加HTTP响应头信息,设置Pragma为public和Cache-Control为public,以确保缓存可以被公共缓存服务器和浏览器缓存。

二、Nginx缓存清理配置
当我们更新了网站的静态资源文件后,需要将缓存中的旧版本文件清除,以使访问者可以获取到最新的静态资源。为了实现这一点,我们可以在Nginx的配置文件中添加以下代码:

http {
    ...
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=cache_zone:10m max_size=10g inactive=60m;
    ...

    server {
        ...
        location /purge-cache {
            internal;
            proxy_cache_purge cache_zone "$scheme$proxy_host$uri$is_args$args";
        }
        ...
    }
    ...
}
登录后复制
  1. location:定义一个/purge-cache的URL,用于触发缓存清理操作。internal表示这个URL只对内部访问有效。
  2. proxy_cache_purge:清除指定的URL对应的缓存文件。

三、代码示例
假设我们网站中的CSS文件位于http://example.com/static/css/style.css,我们可以使用以下代码来清理缓存中的该文件:

curl -X PURGE http://example.com/purge-cache/static/css/style.css
登录后复制

这个请求将会使nginx清除缓存中该URL对应的缓存文件,下次访问该URL时将会重新生成缓存。

结论:
通过配置Nginx的缓存清理,我们可以优化网站静态资源的更新。当我们更新了静态资源时,只需要发送一个清理缓存的请求,就可以使访问者获取到最新的资源文件,提高网站的性能和用户体验。

参考资料:

  • Nginx官方文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge

以上就是Nginx缓存清理配置,优化网站静态资源更新的详细内容,更多请关注Work网其它相关文章!

09-17 14:00