首页 > 技术文章 > 缓存

yjzs 2019-12-20 16:22 原文

浏览器的缓存:

1. 先根据这个资源的一线http header 判断他是否强缓存,如果是,则直接从本地获取缓存资源,

    不会发请求到服务器;
2. 当强缓存没有缓存时,客户端发送请求到服务器,服务器通过另一线request header验证这个资源是否协商缓存,
    称为http在验证,如果没有,服务器将请求返回,但不会返回资源,而是告诉客户端直接从缓存中获取,

     客户端收到返回后就 会缓存中获取资源;
3. 强缓存和协商缓存共同之处在与,如果没有缓存,服务器都不会返回资源;
4. 区别是: 强缓存不对发送请求到服务器,但协商缓存会;
5. 当协商缓存也没有缓存时,服务器就会将发送回客户端;
6. 当 ctrl+F5 强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存;
7. 当F5刷新网页时,跳过强缓存,但是会检查协商缓存;

强缓存:

1、 Expires(改字段 http1.0 时的规范,值为一个绝对时间的GMT 格式的时间字符串,代表缓存资源的过期时间):
2、 Cache-Control:max-age(改字段是 http1.1的规范,强缓存利用max-age 值来判断缓存资源的(协商缓存)生命周期,它 的值 单位为秒);

协商缓存:

1. Last-Modified

     (值为资源***更新时间,随服务器reponse);
2. if-Modified-Since

  (通过比较两个时间来判断资源在两次请求期间是否有过修改,如过没有修改,则***协商缓存);
3. ETage

  (表示资源内容的唯一表示,随服务器response返回);
4. if-Node-Match

(服务器通过比较请求头部的if-Node-Match 与当前资源的ETag是否一质来判断资源是否在量词请求
   之间有过修改,如果没有修改,则*** 协商缓存)

推荐阅读