为什么 MD5 哈希被频繁用于防止加载过时的 CSS、JavaScript 和媒体文件?

Why MD5 hashing is being frequently used for preventing of loading of outdated CSS, JavaScript and media files?

我理解为什么我们需要在构建项目时使 CSS、JavaScript 和图像等媒体文件的名称唯一。我不明白为什么用MD5达到这种效果如此受欢迎,例如:

要生成像main.7e2c49a622975ebd9b7e.js这样的文件名,我们需要读取文件并创建内容的MD5。好像要花很多时间,尤其是高清图片和视频的情况下。

还有一些其他方法可以生成唯一的文件名:

  1. 使用 UNIX 时间戳
  2. 使用 Math.random()

只有两个实例,但我不明白探索更多的理由。

一个主要原因是如果文件内容不改变,散列值就不会改变。如果哈希没有改变,这意味着您的用户的浏览器将不必在您的下一次部署后下载文件(因为浏览器已经缓存了之前页面加载的文件)。

如果您使用时间戳,每个文件名都会在每次部署时发生变化,导致您的用户的浏览器不得不重新下载您项目中的每个 文件...即使是其内容发生变化的文件不变。如果您经常部署代码,这会对性能造成巨大的负面影响。