在所有“加速您的网站”网站和书籍上,他们总是告诉我们不惜一切代价尽量减少 HTTP 请求。这很好很好,但是如果这意味着在每个页面上你必须一次又一次地重新加载 120kb,因为用户缓存是空的呢?
如果我在网站的每个页面上使用 5 个 js 文件,最好将它们放在一个文件中并在每个页面上加载此文件,而不是将它们与所有其他变量文件放在一个大文件中并保存一个 HTTP 请求。从哪个点或文件大小可以“缓存”一个文件并有另一个 HTTP 请求?
当我对每页一个缩小的 JS 文件只使用一个 HTTP 请求时,我给你一个 3 页的例子:
- jquery、jquery ui、thickbox、lavalamp menu => 一起缩小到一个文件中 = 300kb
- jquery,jquery ui,循环插件 => 一起缩小在一个文件中 => 200kb
- jquery, jquery ui, Galleria 插件 => 一起缩小到一个文件 => 250kb
现在另一种可能性总是 2 个 HTTP 请求:一个由 jquery 和 jquery ui => 150kb 组成的文件,我们暂时称它为“jui.js”
- jui.js、thickbox、lavalamp = 开始时又是 300kb,但现在 jui.js 已为其他 2 个页面缓存
- (jui.js 现在被缓存,所以没有加载),只有循环插件 => 只加载 50kb,但是当我分别加载 jui.js 和循环插件时,还有一个 HTTP 请求。
- (jui.js 已被缓存),仅加载 Galleria 插件 => 仅加载 100kb,但再次加载 2 个 HTTP 请求,其中一个请求已被缓存
那么在哪个点或 Kb 大小可以在正常的“响应式”Web 服务器上进行另一个 HTTP 请求?
有没有人有任何最佳实践,还是只是“不惜一切代价最小化 HTTP 请求!”?
(我希望我说清楚了:)一旦我有一些观点,我就会投票给人们!)
编辑:
这基本上是一个更简单的问题:缓存的 js 文件的额外 HTTP 往返需要多长时间?如果http请求比我需要在每个页面上下载额外的非缓存部分的时间慢,那么我会将所有内容放在每个页面上的1个大文件中(每个页面上1个不同的大文件)。
如果缓存的 js 文件的 HTTP 请求几乎没有,那么我会将每个页面需要的部分拆分为一个额外的 js 文件(当然是缩小的),并将每个页面的动态部分包含在不同的(再次缩小)js 文件中。
因此,如果在大多数页面上我需要额外的 100kb(动态部分),我如何测试缓存 HTTP 请求的时间?有没有数字,有人测试过这样的东西吗?
感谢您的精彩回答!