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查看其它位置,重定向。
304Not Modified,资源未作修改。协商缓存。
305所访问资源必须通过代理访问。
401要求用户要进行身份验证,未登录等情形。
403请求已发出,但服务端禁止访问。
404页面无法找到。
500服务器内部错误。
501服务器不支持请求的功能。
502网关错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ :内存管理 newdelete

目录 内存区域划分 C的动态内存的管理方式 new new的基本使用方法 【注意事项】 delete 【注意】 new和delete操作自定义类型 operator new 和 operator delete 【关于自定义类型new申请内存】 【原理】 【调用顺序】 【连续开辟空间问题】 malloc/free和…

基于UC3842的开关电源设计

基于UC3842的开关电源设计 摘要 在现代经济和科技的飞速发展的时代,电源的运用已经变得非常常见。目前,各种科技手段正在推动着电力电子技术和电源设备研发技术的快速发展,同时也促使电源设备向着高频化集成化方向发展。电源供电设备的开发和…

动态规划课堂5-----子序列问题(动态规划 + 哈希表)

目录 引言: 例题1:最长递增子序列 例题2:最长定差子序列 例题3:最长的斐波那契子序列的长度 例题4:最长等差数列 例题5:等差数列划分II-子序列 结语: 引言: 要想解决子序列问…

亚信安慧AntDB的超融合之路

在面对较大用户规模的系统建设需求时,传统数据库往往面临诸多挑战。为了满足多样化的技术要求,项目通常需要倚赖多套技术体系,例如,一套关系型数据库用于元数据管理和标签化管理,另一套则专注于非结构化文件的处理。这…

OWASP Top 10 网络安全10大漏洞——A03:2021-注入

10大Web应用程序安全风险 2021年top10中有三个新类别、四个类别的命名和范围变化,以及一些合并。 A03:2021-注入 Injection从第一的位置滑落至第三位置。94% 的应用程序针对某种形式的注入进行了测试,最大发生率为 19%,平均发生率为 3%&a…

STM32CubeMX学习笔记19——SD卡(SDIO接口)

1、简介 1.1 SD卡简介 很多单片机系统都需要大容量存储设备,以存储数据(常用的有U盘、FLASH芯片、SD卡等),比较而言SD卡是单片机大容量外部存储的首选,只需要少数几个IO口即可外扩一个容量从几十M到几十G的&#xff…

力扣--动态规划/深度优先算法/回溯算法93.复原IP地址

这题主要用了动态规划和回溯算法。 动态规划数组初始化(DP数组): 首先,创建一个二维数组dp,用于记录字符串中哪些部分是合法的IP地址。对字符串进行遍历,同时考虑每个可能的IP地址部分(每部分由1到3个字符组…

共同聚焦空气污染治理,打造可持续发展未来|中联环保圈

在2024年全国生态环境保护工作会议上,我国生态环境部明确提出,“加强重点区域空气质量改善的监督帮扶和统筹强化监督”将成为未来生态环境保护工作的重中之重。这一战略方向的转变,清晰地展现了我国在空气污染治理政策上的优化和深化。 回顾2…

antd vue Tabs控件的使用

Ant Design Vue-------Tabs标签页 今天就讲讲Ant Design Vue下的控件----tabs 标签页 结合项目中的需求,讲一下该控件如何使用,需求: (1)竖排样式 (2)如何使用v-for绑定数据源 (3…

当HR问你为什么申请这个职业,你该怎么回答?【文章底部添加进大学生就业交流群】

目录 强调对公司的了解: 突出你的技能和经验: 表达对行业的热情: 谈论个人发展: 对公司的价值观的契合: 当HR问你为什么申请这个职业时,你可以通过以下方式回答: 强调对公司的了解&#xf…

物联网导论

物联网起源 物联网:是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化三个重要特征。 按照规定的协议,将具有感知、通信、计算等功…

Linux入门基本指令(1)

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2024年3月12日 📨 博主码云地址:渣渣C 📕参考书籍:…

【Python】新手入门学习:什么是工作目录?

【Python】新手入门学习:什么是工作目录? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得…

L2-006 树的遍历(Java)

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中…

使用OCC进行阵列操作

OCC中实现阵列操作,本质上计算出物体的位置,然后进行位置变换,复制出一个新的物体的过程,下列用直线的阵列和环形的阵列作为例子: 直线阵列:以一个在z轴正方向的直线向y轴方向阵列2个距离为5的对象 #inclu…

hcia datacom课程学习(2):telnet与ssh

telnetssh所属层应用层应用层所应用的传输层协议tcptcp功能远程连接远程连接默认端口2322安全性很低较高功能组件分布客户端、服务器端客户端、服务器端linux环境不自带自带windows环境 win7有客户端和服务器端,但需要手动打开。 win10只有客户端,也需要…

基于STM32G031LORA开发板的时间同步项目

一、前言 本项目采用淘宝购买的STM32G031开发板,板上预留了oled和LORA模块的IO,一次性买了四套,资料虽然质量不高,但是覆盖面挺广,有一定的学习价值。 实验目的是需要三个从机实现时间轴的一致,考虑到现有环…

鸿蒙原生应用元服务开发-WebGL网页图形库开发接口说明

一、场景介绍 WebGL主要帮助开发者在前端开发中完成图形图像的相关处理,比如绘制彩色图形等。目前该功能仅支持使用兼容JS的类Web开发范式开发。 二、接口说明 表1 WebGL主要接口列表 本文参考引用HarmonyOS官方开发文档,基于API9。

期货开户市场的风险在哪里?

期货市场的风险在哪里?强平和穿仓是什么? 期货市场是一个自带杠杆的市场,简单理解就是我们只需要用10W就能买到价值100万的商品。期货主要的风险来源于仓位风险和交割风险,仓位风险就是我们是采用满仓还是轻仓方式交易。比如我们…

32个关键字详解①(C语言)

目录 关键字分类: 第一个C程序 - 补充内容 变量的定义与声明 - 补充内容 变量的分类 - 补充内容 变量的作用域 - 补充内容 变量的生命周期 - 补充内容 auto 关键字 register 关键字 static 关键字 static 修饰变量: static修饰函数 sizeof 关键字 基本数…