哈希Hash
你可能会说
我明明更新了网站,为什么打开后还是旧内容?
哈希是按指定算法从内容计算出的摘要,常用来比较文件或标识版本。例如发布网站时,把脚本内容的哈希放进文件名,方便区分新旧文件。页面还要引用新文件,用户才会加载更新;不同内容也可能得到相同哈希,不能把它当成绝对唯一的编号。
也常被叫作哈希值散列散列函数内容哈希文件指纹
延伸阅读 · 权威出处
我明明更新了网站,为什么打开后还是旧内容?
const message = "Hello";SHA-256 前 8 位:
d3cc7661<script src="message.d3cc7661.js">本例按文件的 UTF-8 内容计算 SHA-256,文件名只显示摘要前 8 位。页面引用这个文件,所以显示 Hello。
相同与不同:在算法、编码等条件相同时,相同内容得到相同摘要;摘要不同说明输入不同。摘要相同仍可能是碰撞,截短后更不能保证唯一。SHA-256 的完整十六进制摘要是 64 位;其他算法的长度可能不同。
文件校验与 Git:下载文件后,可用同一算法与可信渠道公布的摘要比较;如果文件和所谓的校验值一起被替换,比对相同也不能证明来源可信。Git 用哈希标识对象,提交的内容还包含父提交和提交信息等;短哈希需要在当前仓库中足以区分对象。
网站发布后还是旧内容。请检查构建产物的内容哈希、入口页面的资源引用和缓存。改完后比较修改前后的文件名,再用内容不变的构建确认哈希稳定,并验证重新访问时加载了新文件。