技术解析

Nginx的缓存去不掉怎么办?
0
2021-05-28 00:10:04
idczone
location ~ .*\.(js|css)?$ {
expires 1h;
}

后来看到有这一行,去掉,重启过也没用。CSS加载都是上一次的,怎么刷都不更新。用的是thinkphp,我猜是服务器的问题,删掉内容是可以看到CSS文件是空的,随便打的字,显示的美国服务器就是上一次的内容。神了!




在静态资源后面加
?v=xxx
这样每次update,都可以改变这个version,这样就不会受缓存困扰了

不过不嫌麻烦的话最好是
main.css -> main.$version.css
当然server端可以吧main.$version.css rewrite到容易实现的 main.css?v=xxx
这个主要是因为许多proxy不会cache 带「?」的URL,所以能不带就不带

没截到图给你看,加了也一样。我真的不知道是什么问题。

expires 只是给你HTTP header加个expires的头而已, 跟nginx没有关系
缓存了的是浏览器

不知道你说什么

的意思是:浏览器保存的css,不是nginx,请清理浏览器缓存

貌似我也遇到过类似的问题。实际情况是nginx缓存了数据,当你本地磁盘的文件更改后,nginx却并没有理会,仍从旧的缓存直接发送数据而不读取磁盘。
谢楼主分享,以后注意一下sendfile选项。

关掉会导致STATIC FILE走CPU而不是DMA。
PRODUCTION环境建议nginx reload,只会reset worker进程

你应该清空你浏览器的缓存。

你说的那cache都是古代的了……

神了,我也是这个问题, vb+nginx 。就猜是不是 sendfile 的问题。。果然如此啊

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服