【网络】http缓存机制

article/2025/9/11 4:34:39

HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我们将其分为两大类

  • 强制缓存
  • 对比缓存

流程

强制缓存流程如下
在这里插入图片描述
对比缓存流程如下
在这里插入图片描述

强制缓存

我们知道,强制缓存在数据为失效的情况下,可以直接使用缓存数据
在没有缓存数据的情况下,像浏览器请求数据时,服务器会将数据和缓存规则一并返回,缓存信息包含在响应header中
对于强制缓存来说,响应header中会有两个字段来表明失效规则Expires/cache-Control

  • Expires
    值为服务端返回的到期时间,在下一次请求时,如果请求时间小于服务端的到期时间,则直接使用缓存数据
    Expires是HTTP1.0的东西,现在默认浏览器均使用HTTP1.1,使用Cache- Control替代,所以他的作用基本被忽略
    另一个问题就是,到期时间是由服务端产生的,但是客户端可能和服务端时间有误差,就会导致缓存命中的误差
  • Cache-Control
    常见的取值有private、public、no-cache、max-age,no-store,默认为prvate
    • private:客户端可以缓存
    • public:客户端和代理服务器都可以缓存
    • max-age = xxx: 缓存内容将在xxx秒后失效
    • no-cache:缓存内容将在xxx秒失效
    • no-cache:需要使用对比缓存来验证缓存数据
    • no-store:所有内容都不会缓存,强制缓存对比缓存都不会触发
      在这里插入图片描述
      如图表示缓存在31536000(365天)内都不会失效,可以直接从缓存数据库获取数据,直接使用

对比缓存

需要进行比较判断才可以使用缓存
对比缓存生效时,状态码为304,且报文大小和请求时间大大减少,原因是服务端在进行表示比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将报文主题部分返回给客户端
对于对比缓存来说,缓存标识的传递是我们需要着重了解的,他在请求header响应header间进行传递,分为两种标识传递

  • Last-Modified/If-Modified-Since
    • Last-Modified(响应头)
      在服务器响应请求时,告诉浏览器资源的最后修改时间
      在这里插入图片描述
    • If-Modified-Since(请求头)
      通过此字段通知服务器上次请求时,服务器返回资源最后修改时间,服务器收到后与Last-Modified进行比对
      如果最后修改时间大于If-Modified-Since,说并被修改过,则响应整片资源内容,返回状态码200
      如果小于等于If-Modified-Since,说明资源无新修改,响应304,告知浏览器继续使用所保存的cache
  • If-Modified-Since
    • Etag:服务器响应请求后,告诉浏览器当前资源在服务器的唯一标识(声称规则由服务器确定)
      在这里插入图片描述
    • If-None-Match:再次请求服务器时,通过此字段通知服务器客户端缓存数据的唯一标识,服务器收到后发现有If-None-Match,则与Etag比对
      不同:说明资源被修改过,则响应整片内容,返回200
      相同:说明资源未被修改,响应304,告知浏览器继续使用保存的cache
      在这里插入图片描述

总结

在这里插入图片描述

参考文章
彻底弄懂HTTP缓存机制及原理
一文读懂http缓存(超详细)


http://chatgpt.dhexx.cn/article/OcXTTauH.shtml

相关文章

彻底理解浏览器的Http缓存机制

概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种:HTTP请求(Request)报文,报文格式为:请求行 – HTTP头(通用信息头,请求头,实体头) – 请…

彻底理解浏览器的缓存机制(http缓存机制)

一、概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步sau交流学习社区(首发):https://www.mwcxs.top/page/565.html。 1、HTTP请求…

HTTP缓存机制与原理详解

1.1 - 缓存 缓存可以重用已获取的资源能够有效的提升网站与应用的性能。Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间。借助 HTTP 缓存,Web 站点变得更具有响应性。缓存分为两点:强制缓存和协商缓存 1.2 - 强制缓存 概念…

浏览器缓存机制(HTTP缓存机制)

不废话,直接上干货,配图解说 首先浏览器首次请求一个网站,网站除了会返回我们需要资源,同时也会返回一些标识信息,这些标识信息约定了客户端和服务端的一些操作,这里列举重要的: 1.cache-contr…

HTTP的缓存机制

前面的话 缓存机制可以有很多种:比如客户端缓存、服务端缓存、代理服务器缓存等。 而本文主角HTTP的缓存是浏览器缓存。为什么这么说,下面来详细介绍一下。 HTTP缓存分类 HTTP缓存可以分为强缓存 与协商缓存。 强制缓存 当缓存数据库中已经有所请求…

HTTP 缓存机制详解

文章目录 HTTP Cache什么是 HTTP Cache关键字简单流程图代码准备不设置明确禁止缓存private与public缓存过期策略1、三种方式设置服务器告知浏览器缓存过期时间2、两种方式校验资源过期 强制校验缓存性能优化期中总结:HTTP 缓存性能检查清单前端工程化参考附代码 HT…

HTTP缓存机制与CDN

前提:周末看视频了解到一个关键词,http缓存,然后顺带这了解了一下cdn web应用程序的缓存大致分为数据库缓存,服务器端缓存(redis以及CDN 等缓存)、本地缓存。 本地缓存还包含很多内容:http缓存&…

浏览器http缓存机制

1、前言 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而浏览器缓存则主要由前端开发在前端js上进行设置。 http缓存是web缓存的核心,是最难懂的那一部分,也是最重要的那一部分。 2、H…

Http缓存机制与原理

一 Http缓存基本概念 1.1 Http报文 在浏览器和服务器进行Http通信时发送的数据即为Http报文,其中分为两部分: header - 报文的首部或头部,其中保存着各类请求的属性字段,关于Http的缓存相关规则信息均保存在header中body - 请求…

前端基础-浏览器缓存/HTTP缓存机制(面试常考)

文章目录 一、HTTP报文1.HTTP请求(Request)报文2.HTTP响应(Response)报文 二、缓存过程分析三、缓存规则1.强制缓存1.1Expires1.2 Cache-Control1.3例子 2. 缓存存储3.协商缓存3.1 Last-Modified / If-Modified-Since3.2 Etag / If-None-Match 四、不同刷新的请求执行过程五、总…

一文理解http缓存机制

HTTP报文 浏览器的缓存机制也就是我们所说的HTTP缓存机制,是根据HTTP报文的缓存标识进行的。先了解下HTTP报文: 请求报文 报文格式:请求行 – 请求头(通用信息头,请求头,实体头) – 请求体(只有POST才有请求体) 响…

http缓存机制

http缓存机制 1. 什么是缓存2. 缓存主要目的3. http缓存概述3.1 强缓存3.2 协商缓存 1. 什么是缓存 缓存(cache)是数据交换的缓冲区,是临时存储数据的仓库,在有大量数据交换的应用程序中,我们会采取一些方式将那些实时…

HTTP缓存机制及原理详解(最全)

前言 缓存技术是无数WEB开发从业人员在工作过程中不可避免的一大问题。在产品开发的时候我们总是想办法避免缓存产生,而在产品发布之时又在想策略管理缓存提升网页的访问速度。了解浏览器的缓存命中原理,是开发WEB应用的基础,本文着眼于此&a…

HTTP缓存机制详解

HTTP缓存机制详解 一. 前言二. 缓存的介绍什么是缓存?为什么要使用缓存?1. 减少冗余的数据传输2. 缓解带宽瓶颈3. 破坏瞬间拥塞4. 降低距离时延 三. 缓存有效性命中和未命中的再验证命中率字节命中率区分响应来自缓存还是服务器 四. 缓存拓扑结构私有缓存…

redis消息订阅与发布

一、消息订阅与发布 消息的订阅和发布是进程间的一种消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息。 二、常用命令示例 先订阅后发布,才能收到消息 执行SUBSCRIBE可以一次性订阅多个 执行PUBLISH命令,发布消息 …

redis发布与订阅

一、什么是发布和订阅 发布订阅是一种应用程序(系统)之间通讯,传递数据的技术手段。特别是在异构(不同语言)系统之间作用非常明显。发布订阅可以是实现应用(系统)之间的解耦合。 发布订阅&…

redis的发布和订阅

1、什么是发布和订阅 redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消 息。 redis客户端可以订阅任意数量的频道。 2、redis的发布和订阅 1、客户…

Redis——Redis 的发布和订阅

Redis 的发布和订阅 文章目录 Redis 的发布和订阅1、什么是发布和订阅2、Redis 的发布和订阅3、发布订阅命令行实现 1、什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可…

Redis如何实现发布订阅功能

Redis如何实现发布订阅功能 文章目录 Redis如何实现发布订阅功能前言一、Redis发布订阅功能1. 发送消息2. 订阅某个频道3. 发布订阅的实现4. 总结 前言 Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者…

Java实现Redis的发布和订阅

Redis上的操作: 打开两个窗口,打开redis客户端: 一个客户端:订阅(客户端订阅channel1频道):127.0.0.1:6379> subscribe channel1 另一个客户端:发布(客户端向channel1频道发送消…