Chromium网络加载速度研究(1)

本文主要内容翻译自Google的文档Data Compression Proxy,如果您觉得文章写的不明白,请参看原文。

对于一款浏览器而言,速度无疑是非常重要的,其中加载速度更是重中之重。UC浏览器很早就采用了云端加速技术,所以在网页加载速度方面一直很有优势。现在越来越多的浏览器,如Opera、QQ浏览器都采用了服务器端加速技术。Chrome移动版从V33开始正式支持数据压缩代理。下面就分析一下Chrome for Android所采用的数据压缩技术。

数据压缩代理

最新的Chrome for Android支持数据压缩代理,通过Google部署的代理服务器优化网站内容,可以极大的减少数据流量。有数据表明,采用这一特性可以减少web页面大小的50%。要启用这一功能,进入Chrome浏览器的菜单”设置->带宽管理->减少数据流量消耗”,然后打开即可。

实现原理

最核心的优化,减少数据大小,是由Google服务器实现的。当开启了”数据压缩代理”特性时,Chrome在手机和运行于Google数据中心的服务器之间建立连接,所有非加密的HTTP请求都通过该连接中转。

Data Compression Proxy

代理服务器收到手机发起的请求后,向目标网站发起请求,对每个回应进行优化,再回给手机。内容优化是通过Google的开源库PageSpeed实现的,该库针对Chrome移动浏览器进行了特别的微调。网页的渲染、JavaScript执行,是由手机上的Chrome浏览器完成的。

  • HTTPS连接不通过数据压缩代理
  • 使用数据压缩代理不需要Google账号
  • 匿名窗口中的浏览不经过数据压缩代理

如果您对压缩代理节省的带宽表示怀疑,可以进入到浏览器设置中查看浏览器接收数据的原始大小和优化大小的对比图。如下图所示,带宽节省增长很快。

bandwidth usage

让我们近距离观察一下压缩代理进行了那些特别的优化。

SPDY

从手机到代理服务器会尽力采用SPDY, 这是一个针对Web优化的协议,得到了Chrome/Firefox和Opera的支持,也是即将到来的HTTP/2.0标准的基础。如果SPDY连接无法创建,则会建立一个普通的HTTP/1.1代理连接。

http-https

使用SPDY协议,代理服务器可以在一个TCP连接上同时复用多个请求和回应,这样做有很大的好处:它可以分摊多个请求的TCP握手开销。去掉每个请求的TCP慢速启动阶段,提高吞吐量,还能在数据流上智能的定义请求和回应优先级。事实上,研究表明仅仅使用SPDY可以减少移动网络下23%的页面加载时间,这还没有将内容优化算在内。

此外,使用数据压缩代理还有许多其它的好处:

  • DNS延迟绑定:DNS查找由代理服务器执行,而不是由手机,这样查找过程可以快很多。
  • 更少的网络活动和更快的加载速度意味着移动射频活动期更短(减少电量消耗)

内容优化

悲剧的是,大多数网站并没有对移动终端进行优化,导致内容加载低效和渲染慢。PageSpeed的经验表明,许多内容的优化可以自动完成,就如同数据压缩代理所做的。

图片转码: 平均下来,每个页面60%的传输数据是图片。为此,代理服务器特别对此进行优化,将所有的图片都转码为WebP格式。WebP比当前流行的格式,如JPEG和PNG,数据量更小。代理支持最新的WebP无损格式,并根据设备分辨率和像素密度对每个图像进行优化。综合各种方法,图像大小可以减少80%。

内容压缩: 代理智能的压缩和缩减HTML、JavaScript和CSS资源,通过移除不必要的空格、注释以及其它与页面渲染无关的元数据,再加上对所有资源启用gzip压缩,可以极大的节约带宽。

安全浏览: 代理实现了移动Chrome浏览器上的安全浏览,当您访问恶意或者钓鱼网站时会告之浏览器,浏览器会显示一个警告页面。恶意网站列表由代理持续更新。

该采用云加速技术吗?

通过前面的分析,采用数据压缩代理似乎是个不错的方案,但是从图1可以看出,所有的数据都需要通过数据压缩代理中转,这就要求:

  • 拥有强大的服务器,快速的进行数据压缩
  • 拥有强大的数据中心,否则瓶颈会存在于数据压缩代理
  • 拥有强大的分布式计算能力,浏览器终端需要能够就近连接数据压缩代理

在中国,Chrome for Android如果开启数据压缩代理功能,速度反而更慢,其原因就在于Google在中国并没有部署服务器。对于个人开发者和中小企业,一来无法部署强大的数据中心,二来也无法使用Google的服务,所以服务器端加速方案不具备可行性。

Comments