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 章
   215   216   217   218   219   220   221   222   223   224   225