Page 224 - Web性能权威指南
P. 224

•   每个来源使用一个连接
                 HTTP  2.0 通过将一个 TCP 连接的吞吐量最大化来提升性能。事实上,在 HTTP
                 2.0 之下再使用多个连接(比如域名分区)反倒成了一种反模式,因为多个连接
                 会抵消新协议中首部压缩和请求优先级的效用。

               •   去掉不必要的文件合并和图片拼接
                 打包资源的缺点很多,比如缓存失效、占用内存、延缓执行,以及增加应用复杂
                 性。有了 HTTP 2.0,很多小资源都可以并行发送,导致打包资源的效率反而更低。

               •   利用服务器推送
                 之前针对 HTTP  1.x 而嵌入的大多数资源,都可以而且应该通过服务器推送来交
                 付。这样一来,客户端就可以分别缓存每个资源,并在页面间实现重用,而不必
                 把它们放到每个页面里了。

               要获得最佳性能,应该尽可能把所有资源都集中在一个域名之下。域名分区在 HTTP
               2.0 之下属于反模式,对发挥协议的性能有害:分区是开始,之后影响会逐渐扩散。
               打包资源不会影响 HTTP 2.0 协议本身,但对缓存性能和执行速度有负面影响。


                          关于合并文件和拼接图片的负面影响,请参考 11.6 节“连接与拼合”,以
                          及该节中的“计算图片对内存的需求”。

               类似地,把嵌入资源改为服务器推送能提升客户端的缓存性能,又不会导致额外网
               络延迟(参见 12.3.7 节中的“实现 HTTP  2.0 服务器推送”)。事实上,由于 3G 和
               4G 网络的往返时间更长,因而服务器推送对移动应用来说效果更明显。


                                   HTTP 2.0 中的打包与协议开销

                由于 HTTP 1.x 做不到多路复用,而且每次请求的协议开销很高,这才有了连接和
                拼合等打包技术。在 HTTP 2.0 之下,多路复用已经不成问题,首部压缩也可以降
                低每次 HTTP 请求要传输的元数据量,打包技术在多数情况下都不再需要了。

                不过,请求开销只是减少了,并没有等于零。少数情况下,某些资源必须一块使
                用,而且更新也不频繁,此时使用打包技术仍然可以提升性能。但这些情况很少
                见,可以算作例外。具体措施可以通过性能度量确定。


               13.3.2 双协议应用策略

               遗憾的是,升级到 HTTP  2.0 不会在一夜之间完成。因此,很多应用都需要认真考
               虑双协议并存的部署策略,即同一个应用既能通过 HTTP  1.x 交付,也能通过 HTTP



               210   |   第 13 章
   219   220   221   222   223   224   225   226   227   228   229