Nginx的缓存去不掉怎么办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolicer
V2EX    NGINX

Nginx的缓存去不掉怎么办?

  •  
  •   coolicer 2013-11-30 15:12:49 +08:00 9281 次点击
    这是一个创建于 4400 天前的主题,其中的信息可能已经有所发展或是发生改变。
    location ~ .*\.(js|css)?$ {
    expires 1h;
    }

    后来看到有这一行,去掉,重启过也没用。CSS加载都是上一次的,怎么刷都不更新。用的是thinkphp,我猜是服务器的问题,删掉内容是可以看到CSS文件是空的,随便打的字,显示的就是上一次的内容。神了!
    第 1 条附言    2013-11-30 16:08:39 +08:00
    Stackoverflow上解决了

    I had the exact same problem - I was running my nginx in virtualbox. I did not have caching turned on. But looks like sendfile was set to on in nginx.conf and that was causing the problem. @kolbyjack mentioned it above in the comments -

    when i turned off sendfile - it worked fine.
    第 2 条附言    2013-11-30 16:09:20 +08:00
    我也是vbox里的ubuntu,随便问一句。sendfile关掉有什么影响
    13 条回复    2016-02-03 16:00:02 +08:00
    coolicer
        1
    coolicer  
    OP
       2013-11-30 15:19:25 +08:00
    coolicer
        2
    coolicer  
    OP
       2013-11-30 15:19:48 +08:00
    9hills
        3
    9hills  
       2013-11-30 15:46:08 +08:00
    在静态资源后面加
    ?v=xxx

    这样每次update,都可以改变这个version,这样就不会受缓存困扰了
    9hills
        4
    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
        5
    coolicer  
    OP
       2013-11-30 15:53:47 +08:00
    @9hills 没截到图给你看,加了也一样。我真的不知道是什么问题。
    cst4you
        6
    cst4you  
       2013-11-30 17:15:24 +08:00
    expires 只是给你HTTP header加个expires的头而已, 跟nginx没有关系
    缓存了的是浏览器
    coolicer
        7
    coolicer  
    OP
       2013-11-30 17:48:20 +08:00
    @cst4you 不知道你说什么
    faceair
        8
    faceair  
       2013-11-30 19:07:11 +08:00
    @cst4you 的意思是:浏览器保存的css,不是nginx,请清理浏览器缓存
    zhujinliang
        9
    zhujinliang  
       2013-11-30 19:24:01 +08:00
    貌似我也遇到过类似的问题。实际情况是nginx缓存了数据,当你本地磁盘的文件更改后,nginx却并没有理会,仍从旧的缓存直接发送数据而不读取磁盘。

    谢楼主分享,以后注意一下sendfile选项。
    VYSE
        10
    VYSE  
       2013-11-30 20:47:42 +08:00
    关掉会导致STATIC FILE走CPU而不是DMA。
    PRODUCTION环境建议nginx reload,只会reset worker进程
    akira
        11
    akira  
       2013-11-30 22:07:23 +08:00
    你应该清空你浏览器的缓存。
    julyclyde
        12
    julyclyde  
       2013-12-01 11:03:17 +08:00
    @9hills 你说的那cache都是古代的了……
    v5mark
        13
    v5mark  
       2016-02-03 16:00:02 +08:00
    神了,我也是这个问题, vb+nginx 。就猜是不是 sendfile 的问题。。果然如此啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4144 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 10:11 PVG 18:11 LAX 02:11 JFK 05:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86