HTTP协议之缓存

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响应



未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

相关文章
相关标签/搜索