前端缓存(HTTP缓存、浏览器缓存)浅析

前端缓存(HTTP缓存、浏览器缓存)浅析前端缓存文章目录前端缓存缓存分类 1 http 缓存 1 强缓存 本地缓存 启发式缓存 2 协商缓存 弱缓存 2 浏览器缓存其他响应头和请求头参数刷新正常重新加载硬性重新加载清空缓存并硬性重新加载调试缓存缓存分类 1 http 缓存浏览器请求流程 1 强缓存 本地缓存 是否使用强缓存 由请求头中的如下参数决定 Expires 格式是 Fri 24Dec 24 07GMT 旧的规范 优先级比较低 Pragma 只有一个值 no cache 和 Cache Control 的 no

前端缓存

缓存分类

在这里插入图片描述

1、http缓存

(1)强缓存(本地缓存)

其中,no-cache是指使用协商缓存,每次都要跟服务器验证缓存有效期,no-store是指不使用缓存。Cache-Control和Expires同时存在时,以Cache-Control为准
在network中看到下面的就是使用了硬缓存。
在这里插入图片描述

启发式缓存

如果max-age和expires属性都没有,找找头里的Last-Modified信息。如果有,缓存的寿命就等于头里面Date的值减去Last-Modified的值除以10(注:根据rfc2626其实也就是乘以10%)。所以,没有明确的cache-control的时候,相当于cache-control:max-age=N,也就是使用了缓存期为N的强缓存,N由Date和Last-Modified决定;如果没有Last-Modified,但是有etag,Firefox也会在请求头里加上cache-control:max-age=0,chrome虽然看不到max-age=0的参数,但实际表现也是返回304。不同的浏览器可能有不同的启发式缓存算法,所以最明智的做法就是明确设置Cache-Control

(2)协商缓存(弱缓存)

ETag/If-None-Match:以一个唯一标志(ETag)作为判断是否使用缓存的标准,它被称为强校验器。资源请求的响应头里含有ETag, 客户端可以在后续的请求的头中带上 If-None-Match 头来验证缓存
Last-modify/if-Modify-Since:以时间作为判断是否使用缓存的标准,它被称为弱校验器,因为它只能精确到一秒。如果响应头里含有这个信息,客户端可以在后续的请求中带上 If-Modified-Since 来验证缓存。
在这里插入图片描述

Tips: Last-modify和ETag同时存在时,需要同时满足才返回304。Last-modify和ETag写在响应头中,if-Modify-Since和If-None-Match写在请求头中。

2、浏览器缓存

其他

响应头和请求头参数

其实我们在请求头和响应头里面都能看到cache-control:no-cache,那他们代表的意思有什么不一样呢。

点击查看

请求头:本次请求要怎么做

响应头:下次请求要怎么做

刷新

以谷歌浏览器为例,有正常重新加载、硬性重新加载、清空缓存并硬性重新加载三种,硬性重新加载也就是我们常说的强制刷新。

正常重新加载

平时用得最多的刷新,就是直接按F5

硬性重新加载

等同于直接按Ctrl+F5,或者在devtools的network面板中勾选Disable cache并刷新(devtools面板开启状态)。这种情况下当遇到需要加载的资源时,不会使用缓存的资源,而是重新发起请求。浏览器的处理其实就是在发出请求的时候在请求头中加上Cache-Control:no-cache和pragma: no-cache。所以也可以看出,我们的请求头是受客户端影响的,不同的客户端可能会加上不同的请求头,看到的请求头就会不一样,而响应头则是由服务器决定的,不同客户端看到的结果应该是一致的。

清空缓存并硬性重新加载

顾名思义,将该页面的缓存清空并进行硬性重新加载,那既然是硬性重新加载,清不清缓存又有什么意义呢?但实际上,页面加载后,如果是通过JS来加载内容,只是普通的硬性重新加载的话这部分的内容仍然是从缓存中加载的,清空缓存则可以保证页面内容是完全重新加载的。

调试缓存

火狐使用about:cache?storage=disk&context=

小菜鸟一枚,哪里写得不对的请赐教。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228352.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:13
下一篇 2026年3月16日 下午7:14


相关推荐

  • R-L模型算法的优缺点_模型解题

    R-L模型算法的优缺点_模型解题@[TOC]LR模型相关知识点#1.LR归一化问题,什么情况可以不归一化,什么情况必须归一化,#2.为什么提到LR损失函数要能知道交叉熵,为什么是它,以它为损失函数在优化的是一个什么东西,知道它和KL散度以及相对熵的关系#3.提到LR的求解方法,比如SGD,知道SGD和BGD的区别,知道不同的GD方法有什么区别和联系,二阶优化算法知道什么,对比offlinelearning和onlinelearning的区别#4.提到调参,知道模型不同超参数的含义,以及给定一个特定情况,大概要调整哪些参数,怎么

    2022年10月10日
    6
  • adb 命令大全_整理磁盘碎片的命令

    adb 命令大全_整理磁盘碎片的命令adb是什么?:adb的全称为AndroidDebugBridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听SocketTCP5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自…

    2022年4月20日
    109
  • 中文大模型三强争霸:DeepSeek、GLM、文心一言深度技术解析

    中文大模型三强争霸:DeepSeek、GLM、文心一言深度技术解析

    2026年3月12日
    3
  • 搭建WAP应用开发程序

    搭建WAP应用开发程序http://www.bitscn.com/java/wireless/200611/82102.h…J2ME开发网最近开辟了Java技术与WAP开发专题,专题将主要讲述WAP开发和Java技术

    2022年8月4日
    9
  • 双通道CAN转以太网和四通道CAN转以太网如何搭配使用?怎样配置?

    双通道CAN转以太网和四通道CAN转以太网如何搭配使用?怎样配置?双通道 CAN 转以太网用 SG CANET 210 代替 四通道 CAN 转以太网用 SG CANET 410 代替 举例 双通道 CAN 转以太网和四通道 CAN 转以太网的出厂 IP 是 192 168 1 37 配置步骤如下 1 将电脑的 IP 改成跟 SG CANET 210 或 SG CANET 410 同网段 2 将电脑接入同网络或跟 SG CANET 210 SG CANET 410 直连 3 如果是配置 SG CANET 210 就打开 SG CANET 210 的配置软件 配置 SG CANET 410 就打开 SG CANE

    2026年3月16日
    1
  • linux 运行asf云挂卡,Linux下使用ASF工具 Steam 挂卡的配置使用

    linux 运行asf云挂卡,Linux下使用ASF工具 Steam 挂卡的配置使用简介既然你都花钱买了游戏 为什么还要花时间玩呢 这款工具就可以不用下载游戏 自动挂卡 是 Steam 回血渠道之一 慈善包 一 安装 NetCoreDebia apt getupdateapt getinstallcu transport httpscurlhtt packages microsoft com keys m

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号