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

的结果,则是完全不用 cookie。比如,在请求图片、脚本和样式表等静态资源时,
                 浏览器绝大多数情况下不必传输特定于客户端的元数据。


                            在使用 HTTP 1.x 的情况下,可以指定一个专门的“无需 cookie”的来源服
                            务器。这个服务器可以用于交付那些不区分客户端的共用资源。



                 13.1.4 并行处理请求和响应
                 为了让应用响应速度达到最快,应该尽可能第一时间就分派所有资源请求。可是,
                 还有一点也要考虑到,那就是所有这些请求以及它们对应的响应,将会被服务器如
                 何处理。如果我们的请求在服务器上按先来后到的顺序依次排队,那就又会导致不
                 必要的延迟。要是想实现最佳性能,就要记住以下几点:

                 •   使用持久连接,从 HTTP 1.0 升级到 HTTP 1.1;
                 •   利用多个 HTTP 1.1 连接实现并行下载;
                 •   可能的情况下利用 HTTP 1.1 管道;
                 •   考虑升级到 HTTP 2.0 以提升性能;
                 •   确保服务器有足够的资源并行处理请求。

                 如果不使用持久连接,则每个 HTTP 请求都要建立一个 TCP 连接。由于 TCP 握手
                 和慢启动,多个 TCP 会造成明显的延迟。在使用 HTTP  1.1 的情况下,最好尽可能
                 重用已有连接。如果碰上能使用 HTTP 管道的机会,不要放过。更好的选择,则是
                 升级到 HTTP 2.0,从而获得最佳性能。

                 识别造成客户端和服务器延迟的不必要资源既是艺术也是技术:要仔细检查客户端
                 资源瀑布(参见 10.2.2 节“分析资源瀑布”),以及服务器日志。常见问题如下:

                 •   服务器资源不足,造成不必要的资源处理延迟;
                 •   代理及负载均衡器容量不足,造成向应用服务器交付请求的延迟(请求排队);
                 •   客户端资源阻塞导致页面构建延迟,参见 10.1 节的“DOM、CSSOM 和 JavaScript”。



                                         优化浏览器中的资源加载
                   浏览器会自动确定文档中每个资源的最优加载顺序,但我们可以为浏览器提供辅
                   助,也可以给它帮倒忙:
                   •   可以为浏览器给出提示,参见 10.5 节“针对浏览器的优化建议”;
                   •   可以通过藏匿资源来干扰浏览器。




                                                                       优化应用的交付   |   207
   216   217   218   219   220   221   222   223   224   225   226