【发布时间】:2015-11-02 05:18:38
【问题描述】:
在 HTML 页面加载序列中最早可以发出图像请求的时间是什么时候?
我参与的一个网站正在改用精灵页面。精灵页面可能非常大,第一页的整体页面加载时间极大地受益于浏览器提前发出的这个请求。这些页面还包括繁重的 CSS 和 JS 加载,仅在这些完成后才启动精灵页面加载会很糟糕。
我发现最快的整体加载时间是创建一个超短的 CSS 文件,在 HTML 头部部分的前面提到过,它引用了一个类中的图像。这通常在其他 CSS 和 JS 在现代浏览器中完成加载(允许的连接数)之前启动图像请求。其他技术似乎至少会延迟到 CSS 全部加载完毕后再发起图像请求。
但是,我不喜欢这种技术,因为它引入了一个似乎不必要的往返行程和一个文件,与直接从HTML。但是,在 HTML 正文等中引用图像似乎会导致请求等到头部 CSS 全部加载完毕。而更明显的解决方案——不费吹灰之力,在主 CSS 中自然地引用它,包括作为正文中的图像——在这个(臃肿的)应用程序中都慢了大约 200 毫秒到 300 毫秒。
也许有一种好方法可以极早地在 HTML 头部中引用图像,这可能会导致至少某些现代浏览器极早地加载它? (也许是某种特殊的、奇怪的链接标签?
任何关于现代加载顺序的良好在线解释也将是有益的(但不是问题的答案)。
我们有一个基于无头浏览器的良好、强大的加载时间测试,它允许我们在页面的真实配置文件上使用各种人工延迟和带宽来测试加载时间精确到 10 毫秒,这些差异在统计上是显着的.所以我很高兴在答案中采用未经测试的提案并将其放入框架中。
[我知道在许多情况下,CSS 中的 data-urls 和 WOFFs 中作为 dingbats 的图标是比 sprite-pages 更好的技术,但并非在所有图像的所有情况下都是如此(我们有数据要显示) ,而这种 sprite-pages 的使用是复杂应用程序迁移路径的一部分]。
【问题讨论】:
标签: javascript css image performance css-sprites