V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaoming1992
V2EX  ›  服务器

频繁修改的静态文件如何较好地部署到服务器上?

  •  
  •   xiaoming1992 · 2019-03-07 19:23:49 +08:00 · 3520 次点击
    这是一个创建于 1848 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人搞前端的,将静态文件(修改较频繁)在部署到服务器上时,遇到了如下两难的问题:

    1. 打包的文件始终使用静态文件名,如index.jstest.xml时,浏览器必须要强制刷新才能更新缓存,在移动端如微信 QQ 更是麻烦;
    2. 使用基于内容的 hash 文件名,如index.fd1s20.js时,不好清理服务器中废弃的文件。

    请大佬指点

    10 条回复    2019-03-23 15:04:46 +08:00
    creamiced
        1
    creamiced  
       2019-03-07 19:29:19 +08:00
    抛砖,HTTP 响应设置不缓存
    akira
        2
    akira  
       2019-03-07 19:34:17 +08:00
    加版本号参数
    xiaoming1992
        3
    xiaoming1992  
    OP
       2019-03-07 19:37:04 +08:00
    @creamiced 感谢回复,但是毕竟是前端页面,不可能不缓存的啊。主要是客户经常修改,我上传上去后,客户经常反馈手机上看着没反应(需要更新缓存),但流量消耗较大,稳定阶段不应该频繁更新缓存,这样就矛盾了。还有,不清楚问题复杂度怎么样,所以不方便请后端配合。
    izoabr
        4
    izoabr  
       2019-03-07 19:38:10 +08:00
    应用的时候尾巴加个随机字符参数试试
    比如 src="/js/index.js?random=19322873283939"
    xiaoming1992
        5
    xiaoming1992  
    OP
       2019-03-07 19:38:31 +08:00
    @akira 今天刚测试的,在 QQ 上,就算更新了版本号,QQ 依然不会更新缓存,微信上没测试。
    xiaoming1992
        6
    xiaoming1992  
    OP
       2019-03-07 19:39:05 +08:00
    @izoabr 今天刚测试的,在 QQ 上,就算更新了版本号,QQ 依然不会更新缓存,微信上没测试。
    xiaoming1992
        7
    xiaoming1992  
    OP
       2019-03-07 19:40:56 +08:00
    而且,有修改的文件需要更新缓存,没有修改的文件不需要更新,如果手动修改 url 的话也是个麻烦事,可能错漏。
    pelloz
        8
    pelloz  
       2019-03-07 19:44:08 +08:00
    使用方案 2,然后写一个脚本定时清理,发现文件名相同,hash 后缀不同的文件,移除修改时间比较旧的。
    xiaoming1992
        9
    xiaoming1992  
    OP
       2019-03-07 19:51:04 +08:00
    @pelloz 貌似是一个好办法,试试👍
    mostkia
        10
    mostkia  
       2019-03-23 15:04:46 +08:00
    检查名字+修改时间较旧的移除+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1246 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:56 · PVG 01:56 · LAX 10:56 · JFK 13:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.