1、缓存的拓扑结构 缓存
私有缓存(private cache)是我的的缓存,包含了单个用户最经常使用的页面 服务器
公有缓存(public cache)又称为共享的缓存,包含了某个用户团体的经常使用页面 网络
图是网上下载的 并发
2、缓存的处理步骤 ui
对一条HTTP GET报文的基本缓存处理过程包含7个步骤 spa
(1)、接收 .net
(2)、解析 日志
(3)、查询-缓存查看是否有本地副本可用 文档
(4)、新鲜度检测 get
(5)、建立响应
(6)、发送-缓存经过网络将响应发回给客户端
(7)、日志
3、保持缓存副本的新鲜度
本打算找个时间画个流程图,在oschina上看见@夕水溪下也写了篇缓存的博客,正好他画了这张图,直接用之,谢@夕水溪下
一、文档过时
经过特殊的HTTP Cache-Control首部和Expires首部,HTTP让原始服务器向每一个文档附加一个“过时时间”
下面2张图,一张是Expires首部,一张是Cache-control:max-age首部
Expires首部和Cache-control:max-age首部所作的事情本质上是同样的,但因为Cache-control首部使用的是至关时间而不是绝对时间,因此更倾向于使用Cache-control首部
max-age值定义了文档最大使用期-从第一次生成文档到文档再也不新鲜、没法使用为止,最大的合法生存时间(秒)
Expires指定一个绝对的日期
二、用条件方法进行再验证
HTTP定义了5个首部
(1)If-Modified-Since:<date>若是从指定日期以后文档被修改过,就执行请求方法。能够与Last-Modified服务器响应首部配合使用。
(2)If-None-Match:<tags>服务器能够为文档提供特殊的标签,而不是将其与最近修改日期匹配,这些标签就像序列号同样。
(3)If-Unmodified-Since在进行部分文件传输时,获取文件的其他部分以前要确保文件未发生变化,此时,这个首部才很是有用
(4)If-Range支持不完整文档的缓存
(5)If-Match用于Web服务器打交道时的并发控制
其中(1)(2)对缓存在验证来讲是最有用的2个首部,If-modified-Since再验证请求一般称为IMS请求
a.若是自指定日期后,文档被修改了,If-Modified-Since条件为真,一般Get会成功执行,携带新首部的新文档会被返回给缓存,天然还包括一个新的过时时间
b.若是自指定日期后,文档没有被修改过,条件就为假,会向客户端返回一个304Not Modified响应报文,为了提升有效性,不会返回文档主体。
下图给出的是一个304响应
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。