文件名使用散列来避免缓存

file name using hash to avoid the cache

[名称].[分机]?[哈希]

我有两个关于表达式的问题:

  1. 这对避免浏览器中的缓存有何帮助?
  2. 实际上在 Windows OS 中,它会发出一个名为 [name].[ext] 的文件,没有 ]?[hash] portion.So,这不是一个好的解决方案吗?

当你 require 文件时,webpack 会把文件复制到输出目录并且 return 你 url。 returned url 应该有文件内容的 MD5 散列,即使复制的文件没有用散列命名。如果您在代码中使用此 url 来加载资源,浏览器将兑现整个 url,而不仅仅是文件名。

因此,如果您有一个名为 'icon.png' 的文件,您可能想用一个新图标替换它,但保留相同的文件名。当您将 url 与哈希一起使用时(即 "icon.png?FE657AC13EB837AC",浏览器将使用完整的 url 将其缓存在客户端计算机上。由于它包含哈希,因此如果您更改浏览器的图像将下载一个新副本。没有 url 中的哈希,浏览器可以假定 'icon.png' 没有更改并使用缓存版本,并且从不检查服务器以查看它是否已更新。

如果您只是对文件使用 url 而没有 html 中的散列,那将达不到目的。您可以生成一个随机数或使用当前日期,例如在查询字符串中使客户端每次都下载文件(或更改服务器上的 headers 以禁用缓存),但这并不理想。通过使用文件的 MD5 哈希值,只要图像具有相同的哈希值,您就可以让浏览器缓存图像,实际上这意味着它是同一张图像。