为什么服务器上静态资源更新了,不清除缓存的情况下浏览器再次访问还在请求旧的静态资源? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xilixjd
V2EX    问与答

为什么服务器上静态资源更新了,不清除缓存的情况下浏览器再次访问还在请求旧的静态资源?

  •  
  •   xilixjd 2017 年 4 月 11 日 9421 次点击
    这是一个创建于 3220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 webpack 打包后,文件被分成了一个入口 html 文件和许多 js 文件

    然后再上传到服务器上

    这个时候再访问网站,浏览器仍然在请求原来的静态 js 文件导致 404 错误,且这个静态文件的来源是 from cache

    比如未更新前的静态资源名称 post.chunk.a9059143.js

    更新后的静态资源名称 post.chunk.1c9dff52.js

    浏览器访问更新后的静态资源仍然是未更新前的 js 文件,导致 404 错误

    如果清除缓存或者进入 chrome 的访客模式,网站能够正常访问

    19 条回复    2017-04-11 23:07:03 +08:00
    Showfom
        1
    Showfom  
    PRO
       2017 年 4 月 11 日
    ctrl + F5 强制刷新
    gamexg
        2
    gamexg  
       2017 年 4 月 11 日
    你的入口 html 被缓存了。
    检查 nginx 等配置,是不是设置了缓存时间。
    xilixjd
        3
    xilixjd  
    OP
       2017 年 4 月 11 日
    @Showfom 不强制刷新有办法解决吗,难道一个网站每次更新完还要用户强刷一下?
    gimp
        4
    gimp  
       2017 年 4 月 11 日
    缓存有失效时间的
    Showfom
        5
    Showfom  
    PRO
       2017 年 4 月 11 日
    @xilixjd 换浏览器哈哈

    你看下你设置缓存多久啊
    vipwpcom
        6
    vipwpcom  
       2017 年 4 月 11 日
    可以加上版本号
    learnshare
    &nbs;   7
    learnshare  
       2017 年 4 月 11 日
    index.html 设置缓存时间,尽量短比较好
    xilixjd
        8
    xilixjd  
    OP
       2017 年 4 月 11 日
    @learnshare 问一下怎么设置,在 nginx 上设置还是 html 文件?
    xilixjd
        9
    xilixjd  
    OP
       2017 年 4 月 11 日
    @Showfom 没有设置缓存。。不知道怎么设置
    misaka19000
        10
    misaka19000  
       2017 年 4 月 11 日 via Android
    @xilixjd 谷歌“ Nginx 缓存失效时间就可以了”
    Showfom
        11
    Showfom  
    PRO
       2017 年 4 月 11 日
    @xilixjd 没设置那就是浏览器默认的缓存,不用在意,等你用户访问的时候,早失效了。
    think2011
        12
    think2011  
       2017 年 4 月 11 日
    @Showfom 这是要让每个用户换浏览器吗... Orz

    楼主的入口文件( index.html )被缓存了,当然请求的也是旧的了,只要保证每次发布 index.html 都是新的,那么问题就解决了。
    think2011
        13
    think2011  
       2017 年 4 月 11 日
    我倒是困惑单页面应用,如果用户正在浏览,这时更新发布了,应该怎么处理..
    nfroot
        14
    nfroot  
       2017 年 4 月 11 日
    @think2011 asp.net 据说会会话失效,然后哈哈哈哈重新登录(反正我们供应商是这样说的,然后父框架页面如果这时候刷新,直接丢你一个 500 错误)
    msg7086
        15
    msg7086  
       2017 年 4 月 11 日
    难道你打包程序会没事删掉旧的资源文件?
    icegreen
        16
    icegreen  
       2017 年 4 月 11 日
    @think2011 更新的时候加面包屑, 旧的资源还保留, 在最新的 index.html 里面引入最新的资源文件;
    think2011
        17
    think2011  
       2017 年 4 月 11 日
    @icegreen 有没有相关文章,这个问题困惑我很久了。
    loading
        18
    loading  
       2017 年 4 月 11 日 via Android
    html 被缓存了
    RE
        19
    RE  
       2017 年 4 月 11 日 via iPhone
    旧版本的 js 不要立马删掉啊… 要么就不要在文件名中带入版本号,直接替换旧的… 或者 html 请求的时候用 build.js?v=123 来控制版本
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 02:20 PVG 10:20 LAX 18:20 JFK 21:20
    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