http协议中的强缓存与协商缓存,带图详解

此篇抽自本人之前的文章:http面试题整理
别急着跳转,先把缓存知识学会了~

http中的缓存分为两种:强缓存、协商缓存。

  1. 强缓存
    响应头中的 status 是 200,相关字段有expires(http1.0),cache-control(http1.1),两者同时出现时 cache-control 优先级更高。主要是利用 cache-controlmax-age值来进行判断。

    浏览器再次请求服务器时,浏览器会先判断max-age,如果到期则直接请求服务器,否则直接从缓存中读取。

    响应头的字段如图所示:字段查看

  2. 协商缓存
    响应头中的 status 是 304,相关字段有 Etag / If-No-MatchLast-Modified / If-Modified-Since
    (1) 服务器的 ETag 和 浏览器的 If-None-Match 对应

    Etag(服务器): 上次加载时,服务器的 response header 返回的;
    If-No-Match(浏览器): 浏览器请求时的 request header 里的,取的是 Etag 的值。

    如果服务器为请求的资源确定的 ETag 标头的值与浏览器请求中的 If-None-Match 值相同,则服务器将返回 304 Not Modified。表示资源文件没有发生改变,命中协商缓存。

    服务器优先考虑Etag。

    Etag 与 Last-Modifed 均是服务器的响应头返回的,如图所示:
    缓存字段

    (2) 服务器的 Last-Modified 和 浏览器请求的 If-Modified-Since 对应

    Last-Modified(服务器):该资源文件最后一次更改时间,服务器的 response header 里返回;
    If-Modified-Since(浏览器):浏览器请求时的 request header 里的,取的是 Last-Modify 的值。

    在下一次发送请求时,服务器在接收到会做比对,如果相同,则命中协商缓存。
    If-No-Match 与 If-Modified-Since 是浏览器发送的,请求头可以简略为以下格式:

GET / HTTP/1.1
Host: example.com
Cache-Control: max-age=0
If-None-Match: "deadbeef"  // 对应服务端的标记Etag
If-Modified-Since: Tue, 22 Feb 2022 20:20:20 GMT // 对应服务端的Last-Modified

补充知识,常见的状态码:

以2开头的代表的成功的返回,以3开头代表重定向,以4开头是客户端、用户操作的问题,以5开头是服务器端的错误。

状态码 含义
200 请求成功。
301 永久重定向,请求的网页已永久移动到新位置,浏览器会自动重定向到新的 url 地址。
302 临时重定向,服务器目前从不同位置的网页响应请求,可使用原有 url 地址。
303 查看其它位置,重定向。
304 Not Modified,资源未作修改。协商缓存。
305 所访问资源必须通过代理访问。
401 要求用户要进行身份验证,未登录等情形。
403 请求已发出,但服务端禁止访问。
404 页面无法找到。
500 服务器内部错误。
501 服务器不支持请求的功能。
502 网关错误。

相关推荐

  1. 前端缓存协商缓存

    2024-03-15 17:02:04       33 阅读
  2. http协商缓存缓存

    2024-03-15 17:02:04       11 阅读
  3. http协议缓存Cache-Control详解

    2024-03-15 17:02:04       21 阅读
  4. 缓存协商缓存区别?

    2024-03-15 17:02:04       23 阅读
  5. 缓存协商缓存区别

    2024-03-15 17:02:04       22 阅读

最近更新

  1. 精通C#编程需要学习哪些常用框架?

    2024-03-15 17:02:04       0 阅读
  2. Redis高可用解决方案哨兵模式与集群模式的比较

    2024-03-15 17:02:04       0 阅读
  3. C#实用的工具类库

    2024-03-15 17:02:04       0 阅读
  4. 4085行代码还原2D我的世界(上)

    2024-03-15 17:02:04       1 阅读
  5. 大数据面试题之GreenPlum(1)

    2024-03-15 17:02:04       2 阅读
  6. 量化机器人能否识别市场机会?

    2024-03-15 17:02:04       1 阅读
  7. 探讨SpringMVC的工作原理

    2024-03-15 17:02:04       1 阅读
  8. CSS布局艺术:掌握水平与垂直对齐的秘诀

    2024-03-15 17:02:04       1 阅读
  9. SQL 游标

    2024-03-15 17:02:04       0 阅读

热门阅读

  1. 22.SELECT基本查询

    2024-03-15 17:02:04       23 阅读
  2. 电脑监控软件未来发展趋势分析

    2024-03-15 17:02:04       22 阅读
  3. python实现websocket

    2024-03-15 17:02:04       24 阅读
  4. 提高分类或者预测模型的准确度

    2024-03-15 17:02:04       26 阅读
  5. MongoDB聚合运算符:$exp

    2024-03-15 17:02:04       23 阅读
  6. 【大数据】一、大数据环境配置

    2024-03-15 17:02:04       22 阅读
  7. Alias许可数量计算

    2024-03-15 17:02:04       23 阅读
  8. React.FC介绍

    2024-03-15 17:02:04       18 阅读