【问题标题】:Webpack dynamic import() and proxy cachesWebpack 动态 import() 和代理缓存
【发布时间】:2018-09-06 07:35:22
【问题描述】:

我有一个类似的代码,webpack 可以完美处理:

import(
  /* webpackChunkName: "my-chunk-name" */
  'my-package'
);

这样就生成了一个名为“my-chunk-name”的块,这很好。 我们的问题是我们的服务器之前有一个用于缓存文件的代理,这会导致问题;每次发布后,“my-chunk-name”都可以更改,但代理仍会为旧版本的文件服务一段时间。

是否有机会为请求的文件添加时间戳,使其类似于 my-chunk-name.js?_ts=1536219218007 ? 这将确保避开代理缓存并提供文件的新副本。

配置文件:

 output: { 
    path: outputPath, 
    filename: '[name].js', 
    chunkFilename: '[id].js'
 }

【问题讨论】:

  • 你的配置文件怎么样?特别是输出部分。
  • 这是 webpack 配置文件的输出部分: output: { path: outputPath, filename: '[name].js', chunkFilename: '[id].js', },跨度>

标签: webpack webpack-4


【解决方案1】:

为此,请使用[hash]

output: { 
    path: outputPath, 
    filename: '[name].[contenthash].js', 
    chunkFilename: '[id].[contenthash].js'
 }

每个版本的哈希值都会有所不同,因此当您更新文件时,您的现金将完全正常工作。


编辑

通过将chunkFilename替换为:

[name].js?h=[contenthash]

这样,你生成了一个文件(好像你放了[name].js),但是在网络调用的过程中,它添加了参数h

(ps:我无法评论)

【讨论】:

  • 这是一个很好的解决方案,但这会在每个建筑物中生成不同的文件,这在我的情况下不是一个可行的解决方案(出于多种原因)。
  • [contenthash] 仅在内容发生更改时才会更改。否则没有其他方法可以做到这一点。
  • 是的,每个版本都会构建一个新文件;正如我所说的那样是正确的,但我需要避免在每次构建时生成新文件..
  • 这是不可能的,无论如何使用 webpack。它只会在每次构建时生成新文件。
猜你喜欢
  • 2018-05-05
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多