css js 后面加版本号的原因和方式

在网站加载的时候,为了快速,浏览器一般会缓存js和css,但是,我们网站如果更新了css和js,怎么告诉浏览器呢、?我么可以通过js和css url的参数方式来解决。

譬如:

/assets/dbdba3fa/js/js.js?v=2

在fecshop中,可以通过参数配置的方式,全部更改js和css的版本号。

如果我们更改了js,那么我们修改为

/assets/dbdba3fa/js/js.js?v=3

,由于是不同的链接,浏览器本地没有这个链接的内容,自然就会去服务器获取这个js的内容。

这也就是为什么我们看到很多网站的css和js后面带这个奇怪的v参数的原因。

网站的图片,css,js 为什么要和网站的域名不一样

在很多网站,我们会发现这么一个问题,为什么很多网站的image js  css 和网站的域名不一样呢?

譬如网站是www.fecshop.com , 但是图片地址为image1.tomtop.com

css和js的地址为xxx.fecshop.com,为什么要这样搞呢?

下面细说一下原因,原因有两点:

1.浏览器在并发加载网站链接内容的时候,每一个域名的并发加载url都有一定的数量限制,如果用不同的域名,那么一次性加载的url就会变多,这样可以快速渲染加载页面。

2.网站一般都是有状态的,也就是有cookie和session等,无论什么链接,都要发送cookie的,譬如网站是www.fecshop.com,那么www.fecshop.com/logo.jpg也是会发送cookie的,包括js和css文件,都会发送cookie,这就带来无意义的发送,增加额外开销,因此,对于图片js,css等,我们使用不同的域名,就不会发送cookie了。

上面是我想到的两点,如果有其他的观点,欢迎拍砖。

当然, 也有的是为了CDN的考虑,用不同的域名解析都CDN服务器上面。