如果设备支持视网膜,Apple.com 总是先显示标准图像,然后使用 javascript 加载视网膜图像。
我想知道为什么苹果不直接使用 CSS 媒体查询来减少 HTTP 请求?
如果设备支持视网膜,Apple.com 总是先显示标准图像,然后使用 javascript 加载视网膜图像。
我想知道为什么苹果不直接使用 CSS 媒体查询来减少 HTTP 请求?
简短的回答——浏览器预取。
除了使用 JS 之外,他们无能为力:
这里的目标不是减少 HTTP 请求。目标是减少并发的HTTP 请求,对于大量冗余的数据 - 如果浏览器不支持高分辨率版本,但无论如何都被迫使用该带宽,则更是如此。
做 JS 的好处:
最终,该<picture>
规范结合元素的srcset=
和media=
属性<source>
,将允许一种无 JS 的方法,允许浏览器智能地处理媒体,基于它们自己的内部查询和页面分析(例如:是 LTE 上的用户连接,或者他们现在在山上的某个地方使用 2G 网络)。
为了节省初始加载时间。特别是在无线/3g 等慢速/不稳定的连接上。
如果您查看图像替换代码 ( https://gist.github.com/2029936 ) 的美化源,特别是函数 __replaceNextQueue,您会注意到它在实际替换图像之前设置了超时。
这样做是为了确保在开始请求新图像之前浏览器事件队列已经完成,其中包括 UI 的初始绘制。这允许浏览器下载较小(文件大小)的图像,并且用户可以在开始处理较大的图像之前开始执行他们的新操作。
将较大的图像下载推迟到 UI 的初始绘制之后会节省时间,尤其是在连接速度较慢的情况下。
因为不是所有的图像都是通过 CSS 加载的,所以有些是 HTML 的。