温州程序员劝退师 (@Das)【互联网老饕小知识】为什么文件要添加一个 hash 后缀? 中发帖

在互联网冲浪时,我们会经常看到带有 hash 的文件名,例如: 
app.9f8e7d.js
style.a13c22.css
audio-20240201-7c91bf.mp3

[image]
表面上只是多了几位随机字符,但它却是很少公开讨论的开发经验:
让系统能够可靠、准确地获取文件的最新版本。
为什么需要这样做?在我的认知里有三层影响因素。

一、缓存系统
浏览器、代理服务器、CDN 都遵循相同的缓存行为:
URL 不变,就认为文件没有变化。
例如,你更新了一个脚本:
script.js // 更新了一些内容但是文件名不变

但如果仍然使用同样的文件名,客户端通常会:

继续使用本地缓存
不重新请求服务器
即使请求,也可能被中间 CDN 返回旧版本

这一行为完全符合 HTTP 标准,但对开发者而言会造成版本错乱。
因此,一个最直接且可靠的方式是: ...