3月阅读周·HTTP权威指南:缓存之优势篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
缓存
Web缓存是可以自动保存常见文档副本的HTTP设备。当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档。
冗余的数据传输
有很多客户端访问一个流行的原始服务器页面时,服务器会多次传输同一份文档,每次传送给一个客户端。一些相同的字节会在网络中一遍遍地传输。这些冗余的数据传输会耗尽昂贵的网络带宽,降低传输速度,加重Web服务器的负载。有了缓存,就可以保留第一条服务器响应的副本,后继请求就可以由缓存的副本来应对了,这样可以减少那些流入/流出原始服务器的、被浪费掉了的重复流量。
带宽瓶颈
缓存还可以缓解网络的瓶颈问题。很多网络为本地网络客户端提供的带宽比为远程服务器提供的带宽要宽。客户端会以路径上最慢的网速访问服务器。如果客户端从一个快速局域网的缓存中得到了一份副本,那么缓存就可以提高性能——尤其是要传输比较大的文件时。
Joe的五金商店旧金山分店的用户通过1.4Mbit/s的T1因特网连接,从亚特兰大总店下载一个5MB的库存文件要花30秒的时间。如果在旧金山分店里缓存了这个文档,本地用户通过以太网连接只要花费不到1秒的时间就可以获得同一份文档了。
在几种不同的网速下,传输几种不同大小的文档时,带宽会对传输速度产生什么样的影响。带宽会给较大的文档带来显而易见的时延,不同类型网络的速度差异会非常明显。一个54kbit/s的Modem传输一个5MB的文件需要749秒(超过12分钟),而在快速以太网LAN中,只要不到一秒的时间。
瞬间拥塞
缓存在破坏瞬间拥塞(Flash Crowds)时显得非常重要。突发事件(比如爆炸性新闻、批量E-mail公告,或者某个名人事件)使很多人几乎同时去访问一个Web文档时,就会出现瞬间拥塞。由此造成的过多流量峰值可能会使网络和Web服务器产生灾难性的崩溃。
1998年9月11日,详细描述Kenneth Starr对美国总统克林顿调查情况的“Starr报告”发布到因特网上去的时候,美国众议院的Web服务器每小时收到了超过三百万次的请求,是其平均服务器负荷的50倍。据报道,新闻站点CNN.com的服务器每秒钟平均会收到超过50000次的请求。
距离时延
即使带宽不是问题,距离也可能成为问题。每台网络路由器都会增加因特网流量的时延。即使客户端和服务器之间没有太多的路由器,光速自身也会造成显著的时延。
波士顿到旧金山的直线距离大约有2700英里。在最好的情况下,以光速传输(186000英里/秒)的信号可以在大约15毫秒内从波士顿传送到旧金山,并在30毫秒内完成一个往返。
假设某个Web页面中包含了20个小图片,都在旧金山的一台服务器上。如果波士顿的一个客户端打开了4条到服务器的并行连接,而且保持着连接的活跃状态,光速自身就要耗费大约1/4秒(240毫秒)的下载时间。如果服务器位于(距离旧金山6700英里的)东京,时延就会变成600毫秒。中等复杂的Web页面会带来几秒钟的光速时延。
将缓存放在附近的机房里可以将文件传输距离从数千英里缩短为数十米。
总结
使用缓存有下列优点。
- 缓存 减少了冗余的数据传输,节省了你的网络费用。
- 缓存 缓解了网络瓶颈的问题。不需要更多的带宽就能够更快地加载页面。
- 缓存 降低了对原始服务器的要求。服务器可以更快地响应,避免过载的出现。
- 缓存 降低了距离时延,因为从较远的地方加载页面会更慢一些。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)