我在看别人的代码的时候,看到这样引包的方法 "/includes/js/third-party.js?ver=3.5.1" 为什么引用第三方js的时候后面要加上版本号,这样引包跟直接引包有什么区别?
怪我咯2017-04-10 15:47:03
和缓存更新有关。
这是为了确保对页面和脚本的代码进行了更新之后,浏览器缓存的脚本能得到正确的刷新,从而不影响页面效果。
用query是比较简单的方法。在有CDN之类的情况下也存在一定的问题。建议阅读前端工程精粹(一):静态资源版本更新与缓存,讲解的非常透彻。
巴扎黑2017-04-10 15:47:03
应该没有什么区别吧,我能想到的好处就是,把版本号放最后面,方便写 js 生成 url,其实这不算什么好处。
对于后台来说,这样写相当于把版本好作为 GET
的参数,这样就可以在调用接口不变的情况下,改变不同版本js库的组织结构。
好吧,如果你问的是为什么要加版本号: 就是 你写的代码可能不支持太低版本或是太高版本,或是有些人想用测试版的最新功能,有些人想用稳定版。
巴扎黑2017-04-10 15:47:03
给@zodiacg提到CDN的点个赞。
补充一下:
正常而言http协议中是有etag和last modify处理静态文件的更新问题,但是有时候服务器配置仅判断url。
这也是各种权衡的结果,为了适应服务器设置只有通过修改url来穿透各层缓存。
如果要深入研究建议楼主也可以去看看apache、nginx、squid、vanish的相关设置。
p.s.正常的第三方库的版本号肯定是在文件名里面的。例如
<script src="https://fb.me/react-0.13.3.js"></script>