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

了。预解析可能的 DNS 查询、预连接可能的目标、预取得和优先取得重要资源,这
               些都是浏览器变聪明的标志。

               可行的优化手段会因浏览器而异,但从核心优化策略来说,可以宽泛地分为两类。

               •   基于文档的优化
                 熟悉网络协议,了解文档、CSS 和 JavaScript 解析管道,发现和优先安排关键网
                 络资源,尽早分派请求并取得页面,使其尽快达到可交互的状态。主要方法是优
                 先获取资源、提前解析等。

               •   推测性优化
                 浏览器可以学习用户的导航模式,执行推测性优化,尝试预测用户的下一次操
                 作。然后,预先解析 DNS、预先连接可能的目标。

               好消息是,所有这些优化都由浏览器替我们自动完成,经常可以节省几百  ms 的网
               络延迟。既然如此,那理解这些优化背后的原理就至关重要了,这样才能利用浏览
               器的这些特性,提升应用性能。大多数浏览器都利用了如下四种技术。

               •   资源预取和排定优先次序
                 文档、CSS 和 JavaScript 解析器可以与网络协议层沟通,声明每种资源的优先
                 级:初始渲染必需的阻塞资源具有最高优先级,而低优先级的请求可能会被临时
                 保存在队列中。
               •   DNS预解析
                 对可能的域名进行提前解析,避免将来 HTTP 请求时的 DNS 延迟。预解析可以
                 通过学习导航历史、用户的鼠标悬停,或其他页面信号来触发。

               •   TCP预连接
                 DNS 解析之后,浏览器可以根据预测的 HTTP 请求,推测性地打开 TCP 连接。
                 如果猜对的话,则可以节省一次完整的往返(TCP 握手)时间。

               •   页面预渲染
                 某些浏览器可以让我们提示下一个可能的目标,从而在隐藏的标签页中预先渲染
                 整个页面。这样,当用户真的触发导航时,就能立即切换过来。

                          要了解谷歌 Chrome 浏览器是如何实现这些及其他网络优化机制的,请参考
                         “High Performance Networking in Google Chrome”(http://t.cn/zYy9ni6)。


               从外部看,现代浏览器的网络协议实现以简单的资源获取机制的面目示人,而从内
               部来说,它又极为复杂精密,为了解如何优化性能,非常值得深入钻研。那么,在


               158   |   第 10 章
   168   169   170   171   172   173   174   175   176   177   178