HTTP缓存机制

  web缓存大致可以分为:数据库缓存、服务器缓存(代理服务器缓存、CDN缓存)、浏览器缓存。其中浏览器缓存包含:HTTP缓存、indexDB、cookie、localstorage等。

  在具体了解HTTP缓存之前先来明确几个术语:

    缓存命中率:从缓存中得到数据的请求数与所有请求数的比率。理想状态下是越高越好。

    过期内容:超过设置的有效时间,被标记为“陈旧”的内容。通常过期内容不能用于回复客户端的请求,必须重新向源服务器请求新的内容或验证缓存的内容是否仍然准备。

    验证:验证缓存中的过期内容是否仍然有效,验证通过的话刷新过期时间。

    失效:失效就是把内容从缓存中移除。当内容发生改变时就必须移除失效的内容。

  浏览器缓存主要是HTTP协议定义的缓存机制。

    HTML meta标签,例如,含义是让浏览器不缓存当前页面。但是代理服务器不解析HTML内容,一般应用广泛的是用HTTP头信息控制缓存。

1.什么是浏览器缓存?

  浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一个页面时,浏览器就可以直接从本地磁盘加载文档。

2.缓存规则解析

  我们认为浏览器存在一个缓存数据库,用于存储缓存信息。在客户端第一个请求数据时,此时缓存数据库中没有对应的缓存数据,需要请求服务器,服务器返回后,将数据存储至缓存数据中。

HTTP缓存机制_第1张图片

3.缓存的类型:对于HTTP的缓存机制来说,策略体现在HTTP的头部信息的字段上,而这个策略根据是否需要重新向服务器端发起请求可以分为强缓存和协商缓存两大类。

  1)强缓存:强缓存紧密联系着一个缓存时间期限,当浏览器请求资源时会查看缓存中的资源是否存在并且确定该缓存的资源是否过了“保质期”,若没有超过保质期,则将取得缓存中的资源进行下一步处理。

HTTP缓存机制_第2张图片

  2)协商缓存:协商缓存无论如何都会和服务器交互,比强缓存稍微要复杂一点,但是二者是相辅相成并且可以共同存在的,强缓存优先级较高,意味着请求一个资源时会先比较强缓存的字段,如果命中则不会再执行接下来的协商缓存的过程。

HTTP缓存机制_第3张图片

 

你可能感兴趣的:(HTTP缓存机制)