Home  >  Q&A  >  body text

javascript - 为什么/includes/js/third-party.js?ver=3.5.1后面要加上ver=3.5.1

我在看别人的代码的时候,看到这样引包的方法 "/includes/js/third-party.js?ver=3.5.1" 为什么引用第三方js的时候后面要加上版本号,这样引包跟直接引包有什么区别?

PHP中文网PHP中文网2655 days ago641

reply all(4)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 15:47:03

    用来防止浏览器使用根据url缓存的js版本,强迫浏览器重新获取最新的版本。

    未来防止浏览器缓存不生效,而加的参数

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:47:03

    和缓存更新有关。

    这是为了确保对页面和脚本的代码进行了更新之后,浏览器缓存的脚本能得到正确的刷新,从而不影响页面效果。

    用query是比较简单的方法。在有CDN之类的情况下也存在一定的问题。建议阅读前端工程精粹(一):静态资源版本更新与缓存,讲解的非常透彻。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:47:03

    应该没有什么区别吧,我能想到的好处就是,把版本号放最后面,方便写 js 生成 url,其实这不算什么好处。

    对于后台来说,这样写相当于把版本好作为 GET 的参数,这样就可以在调用接口不变的情况下,改变不同版本js库的组织结构。

    好吧,如果你问的是为什么要加版本号: 就是 你写的代码可能不支持太低版本或是太高版本,或是有些人想用测试版的最新功能,有些人想用稳定版。

    reply
    0
  • 巴扎黑

    巴扎黑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>

    reply
    0
  • Cancelreply