我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。

我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。

一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。

我现在该怎么办?


当前回答

这个回答主要是一个总结:

Expires, Age, Cache-Control都是HTTP的概念 查看这些链接:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Age https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#caching_static_assets_with_cache_busting

Nginx设置相同,检查下面的链接:

https://nginx.org/en/docs/http/ngx_http_headers_module.html

不缓存,下面可能会有帮助:(可以设置更少的时间缓存重新验证更快):

expires    0;
add_header Cache-Control private;

清除缓存。 . 删除缓存目录下的文件(/var/nginx/cache/) . 重新加载(不是重新启动)nginx - nginx -s重新加载 见https://forum.nginx.org/read.php?2, 2600年、2602年

其他回答

对于那些其他解决方案不工作,检查你是否使用DNS服务,如CloudFlare。在这种情况下,激活“开发模式”或使用“清除缓存”工具。

已经有很多答案了,但我认为我有一个有用的补充;

我正在用Hyper-V运行一个Homestead盒子,我有一个laravel项目,并在nginx上运行。

我在/etc/的nginx文件夹中没有缓存

当我访问我的网站时,我得到了服务器旧视图和css文件。

什么解决了它为我搜索浪费了很多时间看我的nginx配置和尝试的东西是使用PHP工匠。

在artisan安装的文件夹[laravel项目的根目录]中执行如下命令: PHP工匠优化:清除

这个命令清除所有的缓存,当我刷新我的网页,最终它更新了所有的变化。

希望这能帮助像我这样受困的灵魂:)

编辑:如果我有50个名声,我会把这条评论贴在一个已经存在的答案上。[到目前为止我只有43个]

我运行了一个非常简单的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

如果你想清除特定文件的缓存,那么你可以使用proxy_cache_bypass指令。这就是你要做的

location / {
    proxy_cache_bypass $cookie_nocache $arg_nocache;
    # ...
}

现在如果你想绕过缓存,你可以通过传递nocache参数来访问文件

http://www.example.com/app.css?nocache=true

我发现这很有用

grep -lr 'jquery.js' /path/to/nginx/cache/folder/* | xargs rm

搜索,如果找到就删除。