Web 性能权威指南 Cover

Web 性能权威指南

Ilya Grigorik
★★★★★
全书以性能优化为主线,从TCP、UDP 和TLS 协议讲起,解释了如何针对这几种协议和基础设施来优化应用。然后深入探讨了无线和移动网络的工作机制。最后,揭示了HTTP 协议的底层细节,同时详细介绍了HTTP 2.0、 XHR、SSE、WebSocket、WebRTC 和DataChannel 等现代浏览器新增的具有革命性的新能力。

「Web 性能权威指南」读书笔记

Twitter 上有不少人的强力推荐。

这本书读下来和大学三年级时候学的那门「计算机网络」的内容大多相似,不过着重于性能方面,讲得浅显易懂。

带宽和延时

  • 带宽问题容易解决,观察一下整个链路的瓶颈,多拉几条光纤就可以了。
  • 延时问题不容易解决,物理定律确定了传输速度的上限是光速。静态文件可以通过 CDN 分发解决延时的问题,动态请求要从协议或者设计上优化。。

TCP

  • TCP 三次握手增加了一次 RTT。
  • TCP 每个新连接都需要经历慢启动的过程。

综合上面两个问题,尽量减少并复用 TCP 连接。

  • TCP 的吞吐量由拥塞窗口(cwnd)的大小决定,带宽延迟积(BDP)是带宽 * 端到端延时,是在途未确认数据的最大数据量。

TLS

TLS 基于 TCP 协议为上层协议(HTTP,SMTP 等)提供了加密,身份验证,和完整性的保证。

  • TLS 握手需要三个 RTT,分别为 TCP 握手,ClientHello 和交换证书。
  • 如果使用 TLS 会话恢复,在后续的 TLS 连接可以复用之前的加密套件和密钥,整个 TLS 握手降低到两个 RTT。
  • 如果使用上面提到的 TLS 会话恢复,服务器需要储存大量的 TLS 会话状态,浪费大量的内存且不利于水平拓展。类似 JWT 的做法,Session Ticket 将会话状态用服务器的密钥加密后存放到客户端中,这样只要负载均衡的服务器拥有相同的密钥,就可以复用 TLS 会话。

TBD