Page 234 - Web性能权威指南
P. 234
• 来源
由应用协议、域名和端口三个要件构成,比如 (http, www.example.com, 80) 与
(https, www.example.com, 443) 就是两个不同的来源。
• 套接字池
属于同一个来源的一组套接字。实践中,所有主流浏览器的最大池规模都是 6 个
套接字。
自动化的套接字池管理会自动重用 TCP 连接,从而有效保障性能(参见 11.1 节
“持久连接的优点”)。除此之外,这种架构设计还提供了其他优化的机会:
• 浏览器可以按照优先次序发送排队的请求;
• 浏览器可以重用套接字以最小化延迟并提升吞吐量;
• 浏览器可以预测请求提前打开套接字;
• 浏览器可以优化何时关闭空闲套接字;
• 浏览器可以优化分配给所有套接字的带宽。
简单来说,浏览器的网络组件是我们交付高性能应用的同盟。刚刚介绍的这些功能,
没有一项需要我们参与!但这并不是说我们不能再帮助浏览器。我们的设计决策对
应用性能同样起着至关重要的作用,因为这些决策会影响网络通信的模式、类型和
传输频率,以及协议选择和服务器端的性能优化。
谷歌 Chrome 的推测性网络优化
我们已经知道了,现代浏览器的网络组件并非一个套接字管理器那么简单。但是,
即使如此有时候也足以客观地评价现代浏览器中的某些优化技术。
比如,你使用谷歌 Chrome 浏览器的次数越多,它的速度就会越快。Chrome 会学
习访问过的站点的拓扑,以及常见的浏览模式,然后利用这些信息进行各种“推
测性优化”,以预测用户下一步的操作,从而消除不必要的网络延迟:DNS 预解
析、TCP 预连接、页面预渲染,等等。像鼠标悬停在链接上这么个简单的动作,
就可以触发浏览器向其网络组件的“预测器”发送信号,后者则会依据过往的性
能数据选择最佳的优化措施。
要了解这方面更多信息,请参考 10.5 节“针对浏览器的优化建议”。如果你对
Chrome 浏览器的网络优化技术感兴趣,可以看看这篇文章“High Performance
Networking in Google Chrome”:http://hpbn.co/chrome-networking。
浏览器网络概述 | 221