V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Biwood
V2EX  ›  问与答

关于 webpack 长期缓存中的 manifest.js 的问题

  •  
  •   Biwood · 2017-07-20 12:00:21 +08:00 · 3500 次点击
    这是一个创建于 2443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样的,我的项目使用了 webpack 的长期缓存策略。该项目是多页应用,每次打包生成几个页面,但是 vendors 和 manifest 模块是共用的,按理说,只要不修改这两个模块里的内容,他们的 hash 都不会改变的。

    问题来了,当 A 页面上线之后,我重新打包生成了一个 B 页面,vendors 和 manifest 的 hash 都没有变化,但是 B 页面上线之后,A 页面却报错了。报错原因是,A 页面不能正确兼容后打包的 manifest.js 里面的代码。虽然 hash 没有变,但是里面的内容却改变了。

    按照官方的说法,这个 manifest.js 存放的是运行时相关代码,我一直认为这里的代码是长期不变的,后来用对比软件对比发现,一旦别的模块有调整,这里的代码也会有细微的变化。

    有没有什么办法,让 manifest.js 的 hash 也随着内容而改变呢?我 Google 了一下,有人说这是 webpack-md5-hash这个插件的 bug,但是现在还没有人给出有用的解决方案。或者说,是我的使用方式有问题?

    8 条回复    2018-10-12 19:41:52 +08:00
    Tonni
        1
    Tonni  
       2017-07-20 13:24:52 +08:00
    这个问题是 Webpack 自身的问题,官方 repo 里面的 issue 已经很久了,priority 也是很高,但是一直没有修复,建议楼主尝试下 issue 里面提到的解决方案试试: https://github.com/webpack/webpack/issues/1315
    Biwood
        2
    Biwood  
    OP
       2017-07-20 17:12:47 +08:00
    @Tonni 你发的这个 issue 其实是另外一个问题,按照官方文档的教程,使用 webpack/lib/HashedModuleIdsPlugin 配合 webpack-md5-hash 基本解决了,我是在使用了这两个插件之后产生的新的问题
    ChefIsAwesome
        3
    ChefIsAwesome  
       2017-07-20 17:18:32 +08:00 via Android
    处理静态文件缓存的手段自古就有。都是有动手能力的程序员,有些时候不用那么依赖某个工具自带的功能吧。
    Biwood
        4
    Biwood  
    OP
       2017-07-20 17:24:41 +08:00
    @ChefIsAwesome 使用工具当然不仅仅为了处理缓存问题,可以说缓存问题是最后才考虑的,看中的是工具提供的一整套开发流程,而且参与人数众多,可以找到很多方便的插件
    isbase
        5
    isbase  
       2017-07-20 23:16:17 +08:00 via Android
    manifest.[chunkhash].js
    Biwood
        6
    Biwood  
    OP
       2017-07-26 15:02:29 +08:00
    去掉 webpack-md5-hash 这个插件问题就解决了,结帖
    AzraelAdam
        7
    AzraelAdam  
       2018-10-11 18:44:15 +08:00
    请问楼主是怎么实现的增量替换的模式,能把 webpack 的配置发出来参考一下吗
    Biwood
        8
    Biwood  
    OP
       2018-10-12 19:41:52 +08:00
    @AzraelAdam 没太懂你所说的增量替换是指替换什么,配置我没有存下来,不方便拿取,基本都是参照官方文档来写的没有什么新奇之处
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4768 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:59 · PVG 17:59 · LAX 02:59 · JFK 05:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.