美文网首页
HTTP - 强缓存与协商缓存

HTTP - 强缓存与协商缓存

作者: ElricTang | 来源:发表于2019-10-20 21:33 被阅读0次

何时使用强缓存?何时使用协商缓存?

  • 在第一次请求时,浏览器获得Expires和Cache-Control信息。
  • 在发生一次请求后的再次请求时:
    • 浏览器会先获取该资源缓存的header信息,根据其中的expires和cache-control判断是否命中强缓存),若命中则直接从缓存中获取资源,包括缓存的header信息,本次请求不会与服务器进行通信;
    • 如果没有命中强缓存,浏览器会发送请求到服务器,该请求会携带第一次请求返回的有关缓存的header字段信息(Last-Modified/IF-Modified-Since、ETag/IF-None-Match),由服务器根据请求中的相关header信息来对比结果是否命中协商缓存。若命中,则服务器返回新的响应header信息更新缓存中的对应header信息,但是并不返回资源内容,它会告知浏览器可以直接从缓存获取;否则返回最新的资源内容。

一. 强缓存(F5刷新无法触发,状态码200)

  • Cache-Control优先级高于Expires
字段名 描述 可取值
Expires 资源的失效时间 绝对时间的GMT格式的时间字符串
Cache-Control 控制缓存的行为 public、private、no-cache、no-store、max-age等
  • Cache-Control常用指令(http1.1版本才有Cache-Control)
指令名 描述
public 所有用户可缓存
private 响应只以特定的用户作为对象
no-cache 每次请求都与服务器确认资源是否更改(ETag),根据情况判断是否使用缓存。
no-store 彻底不使用缓存,每次都重新下载资源
max-age 设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间

二. 协商缓存(状态码304)

响应头字段 请求头字段 描述
Last-Modified If-Modified-Since http1.0策略
ETag If-None-Match / If-Match http1.1策略
  • 首部字段 If-Modified-Since,属附带条件之一,它会告知服务器若If-Modified-Since 字段值早于资源的更新时间,则希望能处理该请求。
    而在指定 If-Modified-Since 字段值的日期时间之后,如果请求的资源
    都没有过更新,则返回状态码 304 Not Modified 的响应。获取资源的更新日期时间,可通过确认首部字段 Last-Modified 来确定。
  • 服务器会比对 If-Match 的字段值和资源的 ETag 值,仅当两者一致时,才会执行请求。
  • ETag判断资源修改更准确,If-Modified-Since只能检测到秒级别的修改。
  • 优先验证ETag,ETag一致情况下再验证If-Modified-Since。

相关文章

  • HTTP - 强缓存与协商缓存

    何时使用强缓存?何时使用协商缓存? 在第一次请求时,浏览器获得Expires和Cache-Control信息。 在...

  • HTTP缓存原理

    什么是HTTP缓存 HTTP缓存通常指浏览器缓存,基于HTTP中header字段实现HTTP缓存分为强缓存和协商缓...

  • 浏览器缓存

    强缓存和协商缓存:强缓存优先于协商缓存进行;协商缓存失效,返回200,重新返回资源和缓存标志;协商缓存生效,返回3...

  • Http的强缓存与协商缓存

    一、概述 浏览器缓存能够降低资源重复加载并提高网页的加载速度 浏览器的缓存分为两种,强缓存和协商缓存。 1、基本原...

  • 浏览器强缓存和协商缓存

    HTTP强缓存和协商缓存 HTTP基于缓存策略三要素分解法 从性能优化的角度看缓存 https://github....

  • 了解一下浏览器的协商缓存以及nginx如何配置

    强缓存与协商缓存的区别 强缓存:浏览器不与服务端协商直接取浏览器缓存协商缓存:浏览器会先向服务器确认资源的有效性后...

  • 快速理解浏览器缓存

    快速理解浏览器缓存知识。 浏览器缓存主要为两类:强缓存、协商缓存。 和缓存相关的HTTP头有6个。 强缓存: Ca...

  • http协商缓存VS强缓存

    http协商缓存VS强缓存 之前一直对浏览器缓存只能描述一个大概,深层次的原理不能描述上来;终于在前端的两次面试过...

  • http协商缓存VS强缓存

    文章收集自http://www.cnblogs.com/wonyun/p/5524617.html和知乎 张云龙的...

  • 28、http协商缓存,强缓存

    一:浏览器缓存的作用是什么? 缓存可以减少冗余的数据传输。节省了网络带宽,从而更快的加载页面。 缓存降低了服务器的...

网友评论

      本文标题:HTTP - 强缓存与协商缓存

      本文链接:https://www.haomeiwen.com/subject/pyahmctx.html