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

Content-Type: application/x-www-form-urlencoded
                   => Send data, 15 bytes (0xf)
                   {"msg":"hello"}
                   <= Recv header, 134 bytes ➌
                   HTTP/1.1 204 No Content
                   Server: nginx/1.0.11
                   Via: HTTP/1.1 GWA
                   Date: Thu, 20 Sep 2012 05:41:30 GMT
                   Cache-Control: max-age=0, no-cache
               ➊ HTTP 请求首部:218 字节
               ➋ 应用静荷 15 字节({"msg":"hello"})
               ➌ 服务器的 204 响应:134 字节

               在前面的例子中,寥寥 15 个字符的 JSON 消息被 352 字节的 HTTP 首部包裹着,全
               部以纯文本形式发送——协议字节开销占 96%,而且这还是没有 cookie 的最好情
               况。减少要传输的首部数据(高度重复且未压缩),可以节省相当于一次往返的延迟
               时间,显著提升很多 Web 应用的性能。


                          Cookie 在很多应用中都是常见的性能瓶颈,很多开发者都会忽略它给每
                          次请求增加的额外负担。相关讨论请参见 13.1.3 节“消除不必要的请求
                          字节”。


               11.6 连接与拼合

               最快的请求是不用请求。不管使用什么协议,也不管是什么类型的应用,减少请求
               次数总是最好的性能优化手段。可是,如果你无论如何也无法减少请求,那么对
               HTTP 1.x 而言,可以考虑把多个资源捆绑打包到一块,通过一次网络请求获取:

               •   连接
                 把多个 JavaScript 或 CSS 文件组合为一个文件。

               •   拼合
                 把多张图片组合为一个更大的复合的图片。

               对 JavaScript 和 CSS 来说,只要保持一定的顺序,就可以做到把多个文件连接起来
               而不影响代码的行为和执行。类似地,多张图片可以组合为一个“图片精灵”,然后
               使用 CSS 选择这张大图中的适当部分,显示在浏览器中。这两种技术都具备两方面
               的优点。





               174   |   第 11 章
   184   185   186   187   188   189   190   191   192   193   194