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

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

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

我现在该怎么办?


当前回答

在我的nginx安装中,我发现我必须去:

sudo rm -rf /opt/nginx/cache

在那个目录里。如果你知道nginx的安装路径,并且可以找到缓存目录,同样的方法也适用于你。小心使用rm -rf命令,如果你在错误的目录,你可能会删除你的整个硬盘驱动器。

其他回答

您还可以在一个文件的基础上使用

proxy_cache_bypass $http_secret_header;

作为奖励,你可以返回这个头,看看你从缓存(将返回'HIT')或从内容服务器(将返回'BYPASS')得到它。

add_header X-Cache-Status $upstream_cache_status;

要使缓存文件过期/刷新,请使用curl或任何rest客户端向缓存页面发出请求。

curl http://abcdomain.com/mypage.html -s -I -H "secret-header:true"

这将返回一个新的项目副本,它也将替换缓存中的内容。

好吧,在常见的缓存问题的情况下(浏览器缓存,代理缓存,web服务器缓存),你可以使用常见的缓存问题的决定,如CSS或JS文件的很少变化的内容-通过添加一个URI参数到他们的链接:

不<link rel="stylesheet" type="text/css" href="https://example.com/stacks.css">

但是<link rel="stylesheet" type="text/css" href="https://example.com/stacks.css?v=3b16a418cc4c">

就像StackOverflow一样。:)

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

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

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

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

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

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

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

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

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

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

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

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

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

可以删除nginx缓存目录,也可以搜索指定文件:

grep -lr 'http://mydomain.pl/css/myedited.css' /var/nginx/cache/*

并且只删除一个文件nginx刷新它们。