插件窝 干货文章 Nginx缓存清理配置,更新网站静态资源

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

缓存 cache Nginx 哈希 158    来源:    2025-04-16

Nginx缓存清理配置与静态资源更新方案

一、Nginx缓存清理配置

1. 配置缓存路径和参数

在nginx.conf或站点配置文件中添加缓存配置:

http {
    # 定义缓存路径和参数
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

    server {
        location / {
            proxy_cache my_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;

            # 添加缓存头以便调试
            add_header X-Proxy-Cache $upstream_cache_status;
        }
    }
}

2. 手动清理缓存方法

方法1:删除缓存文件

# 删除整个缓存目录
sudo rm -rf /var/cache/nginx/*

# 或者更安全的方式
sudo find /var/cache/nginx -type f -delete

方法2:使用Nginx的purge模块(需安装)

location ~ /purge(/.*) {
    allow 127.0.0.1;
    allow 192.168.1.0/24;
    deny all;
    proxy_cache_purge my_cache "$scheme$request_method$host$1";
}

然后通过访问 http://example.com/purge/your-file-path 来清理特定文件缓存。

二、静态资源更新策略

1. 版本化静态资源

最佳实践是为静态资源添加版本号或哈希值:

<link rel="stylesheet" href="/css/style.css?v=1.2.3">
<script src="/js/app.js?hash=abc123"></script>

2. 配置正确的缓存头

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 1y;
    add_header Cache-Control "public, no-transform";
    access_log off;
    add_header Last-Modified "";
    etag off;

    # 如果使用版本化资源,可以设置更长的缓存时间
    if ($query_string) {
        expires max;
    }
}

3. 强制浏览器更新缓存

当更新静态资源时,可以通过以下方式之一: 1. 更改文件名(如app-v2.js) 2. 添加查询参数(如app.js?v=2) 3. 使用内容哈希(如app.abc123.js)

三、自动化方案

1. 使用构建工具自动版本化

Webpack/Gulp等构建工具可以自动添加哈希到文件名:

// webpack.config.js
output: {
    filename: '[name].[contenthash].js',
    chunkFilename: '[name].[contenthash].js',
}

2. 部署后自动清理缓存

创建部署脚本:

#!/bin/bash
# 部署新代码
rsync -avz --delete ./dist/ user@server:/var/www/html/

# 清理nginx缓存
ssh user@server "sudo find /var/cache/nginx -type f -delete"

# 重载nginx配置
ssh user@server "sudo nginx -s reload"

四、测试与验证

  1. 使用curl检查缓存头:
curl -I http://example.com/static/js/app.js
  1. 检查X-Proxy-Cache头确认缓存状态

  2. 使用浏览器开发者工具检查资源加载情况

五、注意事项

  1. 生产环境谨慎使用通配符删除缓存文件
  2. 确保有足够的磁盘空间用于缓存
  3. 监控缓存命中率调整缓存策略
  4. 重要更新考虑使用灰度发布策略

通过以上配置和策略,您可以有效地管理Nginx缓存并确保用户能及时获取最新的静态资源。