如果这意味着页面大小下降,那么在什么时候更好地拥有更多HTTP请求?例如,如果我有一个20KB的图像,在使用两个图像更有意义之前我需要减少多少尺寸?
jos*_*736 23
实际的答案永远不会,特别是当你谈论相对微不足道的数据量,如千字节或两千.
网页性能的真正敌人不是传输的字节数; 相反,它是网络延迟.让我们以你的例子为例,考虑一个5 Mb/s的连接(美国的平均连接速度略高于此),服务器的ping时间为80ms:
1x 20 kB files: 80ms latency + 31ms transfer time = 111ms
2x 4 kB files: 160ms latency + 13ms transfer time = 173ms
Run Code Online (Sandbox Code Playgroud)
所有其他变量相等,这种"优化"成本至少为 62毫秒.在现实世界中,我敢打赌,由于额外的服务器负载等因素,性能会更差.
还要考虑到你现在正在使用浏览器有限数量的并行请求中的额外一个(在2到8之间,取决于浏览器)对于图像的一半而不是像脚本,CSS或其他更有价值的东西非精神图像.这会减慢页面的整体加载时间.
此外,我怀疑你的整个前提是有缺陷的.通常,将图像分成两个文件不能真正产生较小的整体文件大小,因为每个图像容器格式都有标题数据 ; 例如,PNG文件在任何实际图像数据之前具有至少57字节的开销.另外,额外的HTTP请求意味着线路上额外的±800-900字节的开销.
我怀疑你会发现一个正确压缩的 PNG不会大于构成同一图像的两个PNG的总大小.
http://josh3736.net/images/is1.png(1027字节)
http://josh3736.net/images/is2a.png http://josh3736.net/images/is2b.png(730 + 809 = 1539字节)
尽管第一个PNG具有150x100像素的"死"透明空间,但它比代表相同图像的两个PNG 小33%.(无视我<img>在这里不能正确对齐标签以使两个示例看起来相同.)