美文网首页
Http缓存实现过程图

Http缓存实现过程图

作者: 走在冷风中吧 | 来源:发表于2019-08-12 17:47 被阅读0次

http缓存分为强制缓存对比缓存两种, 两者可以混合使用

image.png

图解:

浏览器初次请求网络之后获得数据并进行缓存.
第二次请求网络数据之后, 首先要判断是否有缓存控制字段cache-control, 缓存cache-control的优先级大于比较缓存.

  1. 强制缓存的控制字段是 cache-control(http1.0时期有个Expires字段,和cache-control的max-age作用相同, 用来控制过期时间, 优先级低于cache-control的max-age,先不做学习)
    可取值是:private, public, max-age, no-store,no-cache, 默认取值为private
    1.1 private/public: 对于客户端而言, 不需要区分private和public, 客户端均可以进行缓存.
    1.2 max-age: 例如: Cache-control: max-age=31536000 代表强制缓存时长为365天,如果启用这种缓存策略, 只要在有效的缓存期限内, 浏览器将直接读取本地缓存, 不去请求服务器. 当缓存时长过期后, 会使用对比缓存的Etag判断当前是否是最新资源
    1.3 no-cache: 表示未启用强制缓存, 需要去判断有无使用对比缓存, 比较Etag值
    1.4 no-store: 不启用缓存,强制缓存和对比缓存都不会使用!

  2. 对比缓存
    1.1 ETag/If-None-Match 这是一组用来判断缓存是否命中(服务器资源是否发生新的变化)的字段.
    Response header返回Etag字段, Etag是一段有服务器生成的随机码, 下发给客户端, 用作一次资源请求的标识符. 相同的Etag代表请求的资源相同.
    Request header将上次response的Etag字段放入到If-None-Match中, 发送服务器作为请求标识.
    服务器对请求标识进行比对, 若没有发生变化则返回状态码304和header, 缓存命中, 客户端从缓存库读取数据.

    1.2 Last-Modified/If-Modified-Since 通过资源的修改时间来判断是否使用缓存, 优先级低于Etag
    Response header返回Last-Modified字段, 标识当前资源的最新修改时间,下发给客户端
    Request header将服务器返回的last-modified作为If-Modified-Since字段发送给服务器
    服务器做时间比对之后, 相同则仅返回304和header, 客户端使用缓存, 不同则返回200和body数据实体.

注明: 以上图片转载至博客彻底弄懂http缓存机制及原理, 写入自己的简书方便以后复习查找.
以上文字为个人理解, 如有错误欢迎指正~ 感谢~

相关文章

  • Http缓存实现过程图

    http缓存分为强制缓存和对比缓存两种, 两者可以混合使用 图解: 浏览器初次请求网络之后获得数据并进行缓存.第二...

  • SDWebImage用法,原理以及实现过程

    简单实现缓存图片的方法: SDWebImage原理图: SDWebImage实现过程: 入口 setImageWi...

  • http缓存过程

    注:http 缓存只能缓存 get 方式请求的资源浏览器缓存分 强制缓存 和 协商缓存 ,分别使用的字段前者是Ex...

  • http缓存过程

    对于http缓存,之前一直只知道根据 浏览器是否向服务端发请求来确认是否使用缓存资源缓,浏览器缓存分 强制缓存 和...

  • HTTP缓存原理

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

  • Okhttp缓存源码分析和自定义缓存实现

    缓存的一般思路 下面是我理解的网络请求框架的缓存基本实现。大致的过程是有缓存用缓存的数据,没缓存发起http请求取...

  • HTTP 协议缓存过程

    参考文章:浏览器 HTTP 协议缓存机制详解 max-age 和 expires 服务器用 http/1.0+ 的...

  • 前端缓存的运用-Web离线应用解决方案—ServiceWorke

    内容概要 1.http请求过程(仅关于缓存部分)2.强缓存3.对比缓存4.http header (仅关于缓存部分...

  • iOS开发- 获取本地视频文件

    下面具体介绍下实现过程。先看效果图。图1. 未实现功能前, iTunes截图http://img.blog.csd...

  • SDWebImage的实现原理

    SDWebImage底层实现有沙盒缓存机制,主要由三块组成 内存图片缓存内存操作缓存磁盘沙盒缓存 内部实现过程: ...

网友评论

      本文标题:Http缓存实现过程图

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