Page 220 - Web性能权威指南
P. 220
WebP:Web 上的新图片格式
WebP 是谷歌开发的一种新图片格式,得到了 Chrome 和 Opera 浏览器支持。这种
格式的无损压缩和有损压缩效能都有所提升:
• WebP 的无损压缩图片比 PNG 的小 26%;
• WebP 的有损压缩图片比 JPG 的小 25%~34%;
• WebP 支持无损透明压缩,但因此仅增加 22% 的字节。
在现有网页平均 1 MB 大小,其中图片占一半的情况下,WebP 节省的 20%~30%,
对每个页面而言就是几百 KB。这种格式需要客户端 CPU 多花点时间解码(大约相
当于处理 JPG 的 1.4 倍),但字节的节省完全可以补偿处理时间的增长。此外,由于
数据流量的限制和高速网络的存在,对很多用户而言,节省字节才是当务之急。
事实上,Chrome Data Compression Proxy 和 Opera Turbo 等工具为用户降低带宽
占用的主要手段,就是重新把每张图片编码为 WebP 格式。正常情况下,Chrome
Data Compression Proxy 的数据压缩率可以达到 50%,这说明我们自己的应用也有
很多可以通过压缩提升性能的空间。
13.1.3 消除不必要的请求字节
HTTP 是一种无状态协议,也就是说服务器不必保存每次请求的客户端的信息。然
而,很多应用又依赖于状态信息以实现会话管理、个性化、分析等功能。为了实现
这些功能,HTTP State Management Mechanism(RFC 2965)作为扩展,允许任何
网站针对自身来源关联和更新 cookie 元数据:浏览器保存数据,而在随后发送给来
源的每一个请求的 Cookie 首部中自动附加这些信息。
上述标准并未规定 cookie 最大不能超过多大,但实践中大多数浏览器都将其限制为
4 KB。与此同时,该标准还规定每个站点针对其来源可以有多个关联的 cookie。于
是,一个来源的 cookie 就有可能多达几十 KB !不用说,这么多元数据随请求传
递,必然会给应用带来明显的性能损失:
• 浏览器会在每个请求中自动附加关联的 cookie 数据;
• 在 HTTP 1.x 中,包括 cookie 在内的所有 HTTP 首部都会在不压缩的状态下传输;
• 在 HTTP 2.0 中,这些元数据经过压缩了,但开销依然不小;
• 最坏的情况下,过大的 HTTP cookie 会超过初始的 TCP 拥塞窗口,从而导致多
余的网络往返。
应该认真对待和监控 cookie 的大小,确保只传输最低数量的元数据,比如安全会话
令牌。同时,还应该利用服务器上共享的会话缓存,从中查询缓存的元数据。更好
206 | 第 13 章