1

我一直在研究其他一些网站的代码,我注意到一些网站使用奇怪的 css 和 js 文件名。

例子:

www.website.com/js/s_bda6c508a1d8d5de14fb21f61da91512.js
www.website.com/css/6357525.css

有谁知道这是什么技术?

4

3 回答 3

11

这很可能是用于破坏缓存的随机生成的哈希。

基本上,他们可能会合并并缩小所有 JS 和 CSS 资源,因此每个资源都有一个主文件(由于 http 请求较少,这大大减少了页面加载时间)。

每当他们运行编译这些文件的脚本时,他们都会被赋予随机的乱码名称,这样下次用户访问该站点时,他们将下载更新的 CSS 和 JS,而不是使用旧缓存版本的浏览器,并可能导致页面显示不正确(例如,如果他们使用更传统的名称,例如scripts.jsor style.css)。

编辑:就像jesus.tesh在他的评论中指出的那样,另一种非常常见的缓存破坏技术是在资源href的末尾添加一个随机且无意义的查询值,例如style.css?22137310)。

于 2013-07-25T20:58:23.830 回答
2

通常是因为框架的资产编译。

我使用 Ruby on Rails,在我的开发机器上,我的 css 文件可能会被命名application.cssui.css或者其他任何东西,但是当 rails 部署时,它会将所有这些文件编译成一个文件,其名称如下:

 application-bec2abb573c652a8d453f24b457e389d.css

这只是我的服务器的一个标记,它告诉它资产是为哪个部署编译的。

正如其他几个人提到的那样,它还可以防止旧缓存。

于 2013-07-25T20:58:40.490 回答
0

它只是随机的文件名。

为什么?为什么要这样做的答案很简单。每当您的浏览器从域(js、css、图像等)请求内容时,它会将回复缓存在您的磁盘上,因此下次请求时它不会再次下载(HTTP 状态代码 304),以便绕过缓存每当您访问网页时,该机制都会生成不同的文件名,以强制浏览器每次下载文件的新副本。

于 2013-07-25T21:02:16.997 回答