宝塔面板Nginx缓存清理全攻略:三步解决网站更新不生效
宝塔面板Nginx缓存清理全攻略:三步解决网站更新不生效
很多站长在修改CSS、JS或图片后,刷新浏览器却还是旧版本,这种问题十有八九是Nginx缓存没清干净。
宝塔面板集成的Nginx默认开启了静态文件缓存(通过add_header Cache-Control或expires指令),如果你不清楚怎么清理,会非常头疼。
下面我用零基础也能看懂的方式,教你彻底清理Nginx缓存。
清理前的准备工作
先确认你的宝塔面板和网站基本信息:
- 登录宝塔后台,进入“网站”页面,找到需要清理缓存的站点。
- 点击站点右侧的“设置”,在侧边栏选择“配置文件”,查看Nginx配置中是否包含类似
expires 30d;或add_header Cache-Control "public, max-age=86400";的指令。如果存在,说明有缓存策略。 - 另外,如果你使用了第三方缓存插件(如WP Fastest Cache、Redis),也需要一并清理,但本文只聚焦Nginx原生缓存。
一步步清理Nginx缓存
第一步:手动删除缓存目录
宝塔面板的Nginx默认会将缓存文件存储在临时目录,通常路径为:/tmp/nginx_cache或/www/server/nginx/cache。
你可以通过SSH连接服务器执行以下命令:
# 进入缓存目录
cd /tmp/nginx_cache
# 删除所有缓存文件
rm -rf *
# 或者针对指定网站(如果使用了proxy_cache_path)则按路径删除
如果你不习惯SSH,也可以直接在宝塔面板的“文件”管理中,找到/tmp/nginx_cache文件夹,全选删除。
注意:如果缓存目录为空或不存在,说明未启用文件缓存,请往下看第二、三步。
第二步:通过配置强制禁用指定URL缓存
对于更新频繁的接口或页面,最好直接关闭缓存。
进入站点“配置文件”,在location ~ \.(js|css|png|jpg|gif)$块内添加以下内容:
location ~ \.(js|css|png|jpg|gif)$ {
expires -1;
add_header Cache-Control "no-cache, no-store, must-revalidate";
proxy_no_cache 1;
proxy_cache_bypass 1;
}
保存后,在宝塔面板顶部点击“重载配置”或“重启Nginx”使其生效。
注意:此操作会彻底关闭静态文件的缓存,可能影响网页加载速度,建议只对需要实时更新的文件使用。
第三步(可选):设置Nginx缓存过期策略
如果你不想完全关闭缓存,可以调整缓存时间。
在配置文件中找到expires指令,修改为更短的时间,例如expires 1h;,然后重载Nginx。
这样1小时后自动清理旧缓存,用户就能看到新版本。
频繁遇到的坑与解决
问题1:清理缓存后浏览器还是旧内容?
可能是浏览器自身缓存(强缓存)没清。
请用快捷键Ctrl+Shift+Delete清除浏览器缓存,或使用无痕模式访问。
另外,如果使用了CDN(如Cloudflare),还需要在CDN后台刷新缓存。
问题2:删除了Nginx缓存目录但文件自动重建?
说明你只删除了临时文件,但Nginx进程可能还在使用内存中的缓存。
建议重启Nginx:在宝塔面板左侧“软件商店”中找到Nginx,点击“重启”;
或者执行命令systemctl restart nginx。
问题3:用了proxy_cache_bypass但部分文件仍有缓存?
检查proxy_cache_path指令是否正确指向了缓存目录,以及是否在location块外定义了缓存区域。
示例配置:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
确保proxy_cache my_cache;和proxy_cache_bypass $http_cache_control;配合使用。
如何确认缓存已清除
最后一步,验证是否生效。
在本地电脑打开浏览器开发者工具(F12),切换到“网络”选项卡,刷新网站页面,点击任意静态资源(如CSS文件)。
查看响应头中的Cache-Control字段:如果是no-cache或max-age=0,说明缓存已成功清理或关闭。
如果仍有max-age=86400,说明缓存策略仍生效,请重复前面步骤。
对于服务器端,你也可以执行以下命令查看缓存目录大小:
du -sh /tmp/nginx_cache/*
如果目录为空或大小极小,表示清理成功。
掌握了宝塔面板Nginx缓存清理的方法,以后网站更新后就不用反复发公告让用户清缓存了。
如果你在操作中遇到其他问题,欢迎在评论区留言,我会一起解答。