7. 缓存
文章平均质量分 80
gzf6
这个作者很懒,什么都没留下…
展开
-
7.1 缓存的概念与应用
缓存(cache):HTTP 的仓库,Web 缓存(Web cache)或代理缓存(proxy cache)是一种特殊的 HTTP 代理服务器,可以将经过代理传送的常用文档复制保存起来。之后请求同一文档的别的客户端就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比从远程 Web 服务器下载快得多。HTTP 定义了很多功能,使得缓存更加高效,并规范了文档的新鲜度和缓存内容的隐私性原创 2017-10-22 19:08:47 · 271 阅读 · 0 评论 -
7.2 缓存的命中与未命中
缓存很有帮助,但缓存无法保存世界上每份文档的副本,即便可以保持也不能进行及时的更新。缓存命中(cache hit):可以用已有的副本为某些到达缓存的请求提供服务。缓存未命中(cache miss):其他一些到达缓存的请求可能会由于没有副本可用,而被转发给原始服务器。 1. 再验证HTTP 再验证 (revalidation):原始服务器的内容可能会发生变化,缓存要不时对其进行检测,看看它们保存原创 2017-10-22 19:11:20 · 8729 阅读 · 0 评论 -
7.3 缓存的拓扑结构
私有缓存(private cache):专用缓存,是个人的缓存,包含了单个用户最常用的页面。公有缓存(public cache):共享的缓存,包含了某个用户团体的常用页面。 1. 私有缓存私有缓存不需要很大的动力或存储空间,这样就可以将其做得很小,很便宜。Web 浏览器中有内建的私有缓存——大多数浏览器都会将常用文档缓存在你个人电脑的磁盘和内存中,并且允许用户去配置缓存的大小和各种设置或查看缓原创 2017-10-22 19:14:29 · 489 阅读 · 0 评论 -
7.4 缓存的处理步骤
对一条 HTTP GET 报文的基本缓存处理过程包括 7 个步骤: 1. 接收——缓存从网络中读取抵达的请求报文。 2. 解析——缓存对报文进行解析,提取出 URL 和各种首部。 3. 查询——缓存查看是否有本地副本可用,如果没有,就获取一份副本(并将其保存在本地)。 4. 新鲜度检测——缓存查看已缓存副本是否足够新鲜,如果不是,就询问服务器是否有任何更新。 5. 创建响应——缓存会用新的原创 2017-10-22 19:16:02 · 498 阅读 · 0 评论 -
7.5 保持副本新鲜度
服务器上的数据随时会变,已缓存数据要与服务器数据保持一致。HTTP 有一些简单的机制可以在不要求服务器记住有哪些缓存拥有其文档副本的情况下,保持已缓存数据与服务器数据之间充分一致。HTTP 将这些简单的机制称为文档过期(document expiration)和服务器再验证(server revalidation)。1. 文档过期通过特殊的 HTTP Cache-Control 首部和 Ex原创 2017-10-22 19:18:34 · 314 阅读 · 0 评论 -
7.6 控制缓存的能力
服务器可以通过 HTTP 定义的几种方式来指定在文档过期之前可以将其缓存多长时间,按照优先级递减的顺序:附加一个 Cache-Control: no-store 首部到响应中去;附加一个 Cache-Control: no-cache 首部到响应中去;附加一个 Cache-Control: must-revalidate 首部到响应中去;附加一个 Cache-Control: max-age原创 2017-10-22 19:19:56 · 226 阅读 · 0 评论 -
7.7 设置缓存控制
简要介绍 Apache Web 服务器如何支持缓存控制。1. 控制Apache的HTTP首部Apache Web 服务器提供了几种设置 HTTP 缓存控制首部的机制。其中很多机制在默认情况下都没有启动。某些 Apache 特性的简述: mod_headers: 通过 mod_headers 模块可以对单独的首部进行设置。装载了这个模块,就可以用设置单个 HTTP 首部的指令来扩充 Apach原创 2017-10-22 19:20:37 · 312 阅读 · 0 评论 -
7.8 新鲜度详细算法
本节适用于那些研究缓存内部机制的人。为了便于说明 HTTP 规范中的内容,我们使用了 Perl 伪代码。如果对计算缓存过期时间的公式中那些繁复的细节不感兴趣的话,可以跳过这一节。1. 使用期和新鲜生存期为了分辨已缓存文档是否足够新鲜,缓存只需要计算两个值:已缓存副本的使用期(age),和已缓存副本的新鲜生存期(freshness lifetime)。如果已缓存副本的时长小于新鲜生存期,就说明副本原创 2017-10-22 19:21:40 · 2664 阅读 · 0 评论 -
7.9 缓存和广告
1. 发布广告者的两难处境你可能认为广告商会喜欢缓存。毕竟,如果到处都是缓存的话,广告商的成本会更低,缓存显示的广告会更快更漂亮。但是缓存会向原始服务器隐藏实际的访问次数,如果收益是基于访问次数的话,这就很麻烦了。2. 发布者的响应现在,广告商会使用各种类型的“缓存清除”技术来确保缓存不会窃取他们的命中流量。他们会在内容上加上 no-cache 首部。他们会通过 CGI 网关提供广告。还会在原创 2017-10-22 19:22:34 · 781 阅读 · 0 评论