为什么js文件的名字像MD5运算过的一样?

这个过程叫做 revision。如果你有一个名字是 main.js 的脚本,且有 cache 头,浏览器就会对他进行缓存,下次再访问时文件如果尚在缓存期内就直接读取缓存,而非再次从网络加载,提升页面的访问速度。问题来了,如果这时你对这个文件进行任何修改,可能是加新功能,也可能是修正了某个导致非常严重问题的 bug,即使你更新了服务器上的 main.js,用户浏览器也是不会更新的,因为尚在缓存期内。因此根据文件内容算出一个 hash 值作为文件名,只要文件内容稳定,文件名就不发生变化,你可以把缓存期限设置为一万年,但是一旦内容变化,就生成一个具有新名字的文件,就解决了上诉问题。可以理解成这是针对同一个文件的版本控制,每个版本都会有对应的一个实体文件。以前还有做法是在文件名后面加 query 参数,文件名不变,query 变了也不会直接读取缓存。更有甚者(国内某知名 SNS 网站)现在还在用的方式是在前端用脚本加时间戳,导致文件永远不会被缓存...即使内容没变,浪费流量、拖慢加载速度。除了节省流量、提升加载速度,也使得热部署成为可能。现在所有的前端 workflow 中 revision 应该是标配了。

 

因为浏览器存在缓存机制,所以需要改变js文件的名字保证下一次浏览器可以请求到最新的js文件。
如果你愿意可以用更好看的命名方法,只要手动在js文件名后面加上一个版本号,但是手动修改文件名这种重复性劳动还是交给计算机做吧。
于是md5这种方法登场了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值