扫码关注官方订阅号
有时在引用样式文件或资源文件时会加上版本号 例如:style.css?v=20140520background: xxx.jpg?v=201140520 我是菜鸟,有这么几个困惑:
style.css?v=20140520
background: xxx.jpg?v=201140520
我们希望工程师源码是这么写的:
<script type="text/javascript" src="a.js"></script>
但是线上代码是这样的:
<script type="text/javascript" src="a_82244e91.js"></script>
其中”_82244e91”这串字符是根据a.js的文件内容进行hash运算得到的,只有文件内容发生变化了才会有更改。由于版本序列是与文件名写在一起的,而不是同名文件覆盖,因此不会出现上述说的那些问题。同时,这么做还有其他的好处:
线上的a.js不是同名文件覆盖,而是文件名+hash的冗余,所以可以先上线静态资源,再上线html页面,不存在间隙问题; 遇到问题回滚版本的时候,无需回滚a.js,只须回滚页面即可; 由于静态资源版本号是文件内容的hash,因此所有静态资源可以开启永久强缓存,只有更新了内容的文件才会 缓存失效,缓存利用率大增; 修改静态资源后会在线上产生新的文件,一个文件对应一个版本,因此不会受到构造CDN缓存形式的攻击
静态资源版本更新与缓存
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
静态资源版本更新与缓存
对于常用不变的这个就可以不加。 比如你用了不许要制定的第三方库 版本升级的频率不会很高。 这样的就可一不加。