Page 76 - Web性能权威指南
P. 76
设施:在全球几大数据中心租用一些云服务器,然后在每台服务器上都运行代理(服
务器)程序,把请求转发到你的原始服务器,再加上地理 DNS 负载均衡系统即可。
不缓存的原始获取
使用 CDN 或代理服务器取得资源的技术,如果要根据用户定制或者涉及隐私
数据,则不能做到全球缓存,这种情况被称为“不缓存的原始获取”(uncached
origin fetch)。
虽然只有把数据缓存到全球各地的服务器上 CDN 才能发挥最大的效用,但“不
缓存的原始获取”仍然具有性能优势:客户端连接终止于附近的服务器,从而
显著减少握手延迟。相应地,CDN 或你的代理服务器可以维护一个“热连接池”
(warm connection pool),通过它将数据转发给原始服务器,同时做到对客户端快
速响应。
事实上,作为附加的一个优化层,CDN 提供商在连接两端都会使用邻近服务器!
客户端连接终止于邻近 CDN 节点,该节点将请求转发到与对端服务器邻近的 CDN
节点,之后请求才会被路由到原始服务器。CDN 网络中多出来这一跳,可以让数
据在优化的 CDN 骨干网中寻路,从而进一步减少客户端与服务器之间的延迟。
4.7.3 会话缓存与无状态恢复
无论什么情况下,在接近用户的地方终止连接都有助于减少延迟,但有延迟终归快不
过没有延迟。启用 TLS 会话缓存和无状态恢复可以完全消除“回头客”的往返时间。
SSL 2.0 引入的会话标识符机制是 TLS 会话缓存的基础,目前已经得到大多数客户
端和浏览器的广泛支持。然而,如果你在自己的服务器上配置 SSL/TLS,千万不能
主观认为该机制默认是开启的。实际上,在大多数服务器的默认配置下它是禁用的。
为此,应该仔细检查和验证自己的配置:
• 支持多进程或工作进程的服务器应该使用共享的会话缓存;
• 共享的会话缓存的大小应该根据流量调整;
• 应该设置会话超时时间;
• 在多台服务器并存的情况下,把相同的客户端 IP 或相同的 TLS 会话 ID 路由到同
一台服务器可以最好地利用会话缓存;
• 在不适宜使用“单一”负载均衡策略的情况下,应该为多台服务器配置共享缓存,
以便最好地利用会话缓存;
• 检查和监控 SSL/TLS 会话缓存的使用情况,以之作为性能调优的依据。
58 | 第 4 章