浏览器缓存机制图解流程总结

Posted 古月书斋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器缓存机制图解流程总结相关的知识,希望对你有一定的参考价值。

本文转载自:https://blog.csdn.net/qq_37943295/article/details/76686084

一、浏览器缓存机制流程

1、首次加载网页内容 

2、再次加载网页内容

二、相关术语的解释

Etag 
HTTP协议规格说明定义ETag为“被请求变量的实体值”。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:ETag:”50b1c1d4f775c61:df3”客户端的查询更新格式是这样的:If-None-Match : W / “50b1c1d4f775c61:df3”如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。测试Etag主要在断点下载时比较有用。
Last-Modified 
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。 
Last-Modified格式类似这样:

Last-Modified : Fri , 12 May 2018 18:53:33 GMT  
客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过:

If-Modified-Since : Fri , 12 May 2018 18:53:33 GMT  
如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

Expires 
Expires是RFC 2616(HTTP/1.0)协议中和网页缓存相关字段。用来控制缓存的失效日期,要注意的是,HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。
Cache-control 
Cache-Control 是最重要的规则。这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为。这些指令通常覆盖默认缓存算法。缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同一个指令。 
cache-control 定义是:

Cache-Control = “Cache-Control” “:” cache-directive。
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。 

更多内容请参考

HTTP/1.1 Cache中Expiration机制

https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.11

HTTP Cache怎样计算Age

以上是关于浏览器缓存机制图解流程总结的主要内容,如果未能解决你的问题,请参考以下文章

图解:彻底弄懂HTTP缓存机制及原理

图解浏览器缓存

图解浏览器缓存,教你提高用户体验

图解浏览器缓存,教你提高用户体验

Android 【手撕Glide】--Glide缓存机制(面试)

Mybatis-plus流程图解和使用,一级和二级缓存禁用启用详解,map的k-v入库,自增id,分页查询等各种骚操作