渐进式图像并行流, 实现网页图像快速渲染( 四 )

当加载到一半图像的完整数据(而另一半没有数据)看起来 , 还是没有加载所有图像的一半的效果 。

而且 , 浏览器不能预知图像大小时 , 会默认使用占位符中填充位置 , 然后再具体图像加载时继续渲染页面 , 会造成加载过程中页面跳跃 , 访问体验很差 。

利用渐进式图片流可以极大地改善这种体验 。 利用多路复用技术可以同时发送所有图像 , 并行传输 。 这样浏览器就可以一次获取页面所有图像的大小信息 , 可以绘制所有图像的预览页面 , 而无需等待大量数据的加载 , 就直接可以加载样式 , 脚本和其他更重要的图像资源 。

这种并行流式传输图像流的想法源于HTTP/2多路复用技术 , 但它需要在Web服务器的低级部分进行特殊处理 , 到目前为止还没有大规模实现 。

Cloudflare通过改进HTTP/2优先级时 , 实现了这个功能 。 实现图像文件以合适的优先级加载 。 优先级在每个文件中发生变化 , 实现动态可变化的优先级:

包含图像大小的图像标题具有非常高的优先级 , 因为浏览器需要尽快知道大小以进行页面布局 。 图像标题很小 , 因此将其在发送到其他数据之前发送 。

推荐阅读