我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
当前回答
如果你想清除特定文件的缓存,那么你可以使用proxy_cache_bypass指令。这就是你要做的
location / {
proxy_cache_bypass $cookie_nocache $arg_nocache;
# ...
}
现在如果你想绕过缓存,你可以通过传递nocache参数来访问文件
http://www.example.com/app.css?nocache=true
其他回答
对于那些其他解决方案不工作,检查你是否使用DNS服务,如CloudFlare。在这种情况下,激活“开发模式”或使用“清除缓存”工具。
我运行了一个非常简单的bash脚本,它只需要10秒钟就可以完成工作,完成后会给我发一封邮件。
#!/bin/bash
sudo service nginx stop
sudo rm -rf /var/cache/nginx/*
sudo service nginx start | mail -s "Nginx Purged" me@gmail.com
exit 0
在我的例子中,它是在/etc/php/7.2/fpm/php.ini (Ubuntu)中启用的opcache:
opcache.enable=1
将其设置为0使服务器加载(php)文件的最新版本。
在我的情况下,触摸Css文件,使它看起来像资源改变(实际上触摸不做任何文件,除了改变最后修改时间),所以浏览器和nginx将应用最新的资源
我发现这很有用
grep -lr 'jquery.js' /path/to/nginx/cache/folder/* | xargs rm
搜索,如果找到就删除。