IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP缓存 -> 正文阅读

[网络协议]HTTP缓存

http缓存分为:强制缓存和协商缓存

强缓存

不需要客户端就不需要向服务器发送请求,直接使用本地缓存

对于强缓存的资源,可以看到返回的状态码是 200,并且会显示 from memory cache/from disk cache,强缓存是通过 Expires 或者是 Cache-Control 实现的,Cache-Control 的优先级高于 Expires
Expires

它的值是一个 GMT 的绝对时间,在该时间之前缓存都是有效的,不需要发送请求。

缺点:依赖于客户端本地的时间,存在客户端时间和服务器不一致或者本地时间被修改的问题,导致缓存不可用

Cache-Control

Cache-Control: max-age=60 单位秒,相对时间,相对于响应的资源被创建的时间而言在 60s 之内缓存都是有效的。优先级更高

Cache-Control 的其他值

  • public 响应的内容可以被缓存在任何地方(客户端、CDN、代理服务器)服务端参数
  • private 响应只能被缓存在客户端 服务端参数
  • max-age 单位秒,响应在该时间范围内都是有效的 服务端参数
  • no-cache 不是表示响应不能被缓存,响应可以被缓存,只是每次都需要去服务器验证响应是否有效 服务端参数
  • no-store 响应不能被缓存,每次都需要去服务器获取最新的资源 服务端参数
  • max-stale 单位秒,相对时间,允许接收过期的响应,但是过期的时间不能大于我们设置的这个时间 客户端参数
  • max-fresh 单位秒,相对时间,响应必须要在该时间范围都是有效的 客户端参数
  • s-maxage 单位秒,相对时间,会覆盖 max-age,但是只对代理服务器生效。 就是用于表示 cache 服务器上(比如 cache CDN,缓存代理服务器)的缓存的有效时间的,并只对 public 缓存有效 服务端参数
  • must-revalidate 必须校验缓存中的资源是有效的才会被使用
    协商缓存

协商缓存指的是在强缓存失效之后,浏览器携带协商缓存标识向服务器发送请求,验证请求是否有效。有效的话返回状态码 304 且没有响应体客户端直接使用本地缓存;无效的话则返回最新资源和缓存首部(状态码 200)。
Last-Modified & If-Modified-Since/If-UnmodifiedSince

Last-Modified 的值是我们请求的资源在服务器上的最后修改时间,是一个 GMT 的绝对时间。下次客户端请求这个资源的时候就会包含 If-Modified-Since 首部(值就是第一次请求时 Last-Modified 的值)判断是否和服务器上该资源的 Last-Modified 是否一致(大于)不一致则表明缓存失效。

缺点:

只能精确到秒,但是有些文件可能会在 1 秒内被修改多次,此时就会导致客户端使用的资源仍然是旧的文件可能并没有被修改,但是 Last-Modified 却改变了,此时就会导致客户端无法使用缓存

Etag & If-None-Match/If-Match

Etag 是服务器根据某个资源内容生成的唯一标识。

优先级高于 Last-Modified

在这里插入图片描述
在这里插入图片描述

缓存机制总结

强缓存优先于协商缓存,强缓存失效的情况下才会使用协商缓存。协商缓存如果缓存失效的话服务器会返回最新的资源和相关的缓存头,资源会被客户端或者第三方缓存。

参考地址:https://www.jianshu.com/p/0a8ce21912a0

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:34:57  更:2022-10-31 12:37:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:42:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码