Webpack 客户端请求以前的网页包构建';s发出的文件
我让webpack在输出包Webpack 客户端请求以前的网页包构建';s发出的文件,webpack,webpack-2,Webpack,Webpack 2,我让webpack在输出包filename中包含一个哈希,用于缓存失效。当我将一个构建推送到生产环境时,发送了一个html文件(其中包含对上一个构建的哈希的引用)的客户端将请求该文件。同时,如果新版本的文件替换了旧版本的文件,那么这些资产请求将被删除404 例如: 服务器包含bundle.abc123.js 浏览器请求index.html,其中包含我不知道这个解决方案是否理想,但我最终选择了它。另外,我确信可以通过编写一个webpack插件来完成,但是在我使用MVC框架的语言实现它之前,我还没
filename
中包含一个哈希,用于缓存失效。当我将一个构建推送到生产环境时,发送了一个html文件(其中包含对上一个构建的哈希的引用)的客户端将请求该文件。同时,如果新版本的文件替换了旧版本的文件,那么这些资产请求将被删除404
例如:
- 服务器包含
bundle.abc123.js
- 浏览器请求
,其中包含index.html
我不知道这个解决方案是否理想,但我最终选择了它。另外,我确信可以通过编写一个webpack插件来完成,但是在我使用MVC框架的语言实现它之前,我还没有编写过一个插件,将它放在启动/重新初始化例程中。无论哪种方式,这都是您希望在发出
文件之后发生的事情/dist
- 读取/assets/manifest.json,其中将包含当前和以前的文件列表
- 从manifest.json>previous中列出的/assets中删除文件
- 使用manifest.json>current的内容更新manifest.json>previous
- 使用/dist的内容更新manifest.json>current
- 将更新后的manifest.json文件写入磁盘
- 将/dist的内容复制到/assets(将文件保留在当前位置)
,但标记中的所有/dist
和src
引用都指向href
,这才是真正的交易。我正在编写的PostWebpack代码生成/assets
文件和上面提到的其他步骤 这将维护当前版本和上一版本的文件(n和n-1),所有文件都位于同一文件夹中。无需重写或查找:只需维护文件,直到下一个构建结束,此时n-1文件将变为n-2文件并被清除 如果有人不喜欢在较长时间内公开较旧的文件,您可以将清理工作移动到一个进程,该进程在生成后使用您希望的任何方法执行任意时间manifest.json