Nginx的缓存去不掉怎么办?

2013-11-30 15:12:49 +08:00
 coolicer
location ~ .*\.(js|css)?$ {
expires 1h;
}

后来看到有这一行,去掉,重启过也没用。CSS加载都是上一次的,怎么刷都不更新。用的是thinkphp,我猜是服务器的问题,删掉内容是可以看到CSS文件是空的,随便打的字,显示的就是上一次的内容。神了!
8819 次点击
所在节点    NGINX
13 条回复
coolicer
2013-11-30 15:19:25 +08:00
coolicer
2013-11-30 15:19:48 +08:00
9hills
2013-11-30 15:46:08 +08:00
在静态资源后面加
?v=xxx

这样每次update,都可以改变这个version,这样就不会受缓存困扰了
9hills
2013-11-30 15:48:46 +08:00
不过不嫌麻烦的话最好是

main.css -> main.$version.css

当然server端可以吧main.$version.css rewrite到容易实现的 main.css?v=xxx

这个主要是因为许多proxy不会cache 带「?」的URL,所以能不带就不带
coolicer
2013-11-30 15:53:47 +08:00
@9hills 没截到图给你看,加了也一样。我真的不知道是什么问题。
cst4you
2013-11-30 17:15:24 +08:00
expires 只是给你HTTP header加个expires的头而已, 跟nginx没有关系
缓存了的是浏览器
coolicer
2013-11-30 17:48:20 +08:00
@cst4you 不知道你说什么
faceair
2013-11-30 19:07:11 +08:00
@cst4you 的意思是:浏览器保存的css,不是nginx,请清理浏览器缓存
zhujinliang
2013-11-30 19:24:01 +08:00
貌似我也遇到过类似的问题。实际情况是nginx缓存了数据,当你本地磁盘的文件更改后,nginx却并没有理会,仍从旧的缓存直接发送数据而不读取磁盘。

谢楼主分享,以后注意一下sendfile选项。
VYSE
2013-11-30 20:47:42 +08:00
关掉会导致STATIC FILE走CPU而不是DMA。
PRODUCTION环境建议nginx reload,只会reset worker进程
akira
2013-11-30 22:07:23 +08:00
你应该清空你浏览器的缓存。
julyclyde
2013-12-01 11:03:17 +08:00
@9hills 你说的那cache都是古代的了……
v5mark
2016-02-03 16:00:02 +08:00
神了,我也是这个问题, vb+nginx 。就猜是不是 sendfile 的问题。。果然如此啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX