我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
当前回答
您还可以在一个文件的基础上使用
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"
这将返回一个新的项目副本,它也将替换缓存中的内容。
其他回答
可以删除nginx缓存目录,也可以搜索指定文件:
grep -lr 'http://mydomain.pl/css/myedited.css' /var/nginx/cache/*
并且只删除一个文件nginx刷新它们。
除非你通过proxy_cache_path配置了一个缓存区,然后使用它(例如在一个位置块中),通过: Proxy_cache不会缓存任何东西。
然而,如果你这样做了,那么根据nginx的作者,简单地从缓存目录中删除所有文件就足够了。
最简单的方法:find /path/to/your/cache -type f -delete
在我的情况下,触摸Css文件,使它看起来像资源改变(实际上触摸不做任何文件,除了改变最后修改时间),所以浏览器和nginx将应用最新的资源
您还可以在一个文件的基础上使用
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"
这将返回一个新的项目副本,它也将替换缓存中的内容。
在我的服务器上,nginx缓存文件夹在/data/nginx/cache/
所以我只删除了它:sudo rm -rf /data/nginx/cache/
希望这对大家有所帮助。