缓存Cache-Control

news2024/11/18 13:38:16

可缓存性

指定哪些地方可以缓存

public

http请求返回的过程中,http请求返回的内容所经过的任何路径包括:中间的代理服务器发出请求的客户端浏览器,都可以对返回的内容进行缓存。

private

发起请求的浏览器可以缓存。

no-cache

任何节点都不能缓存。

到期

max-age

max-age=<seconds>缓存到 max-age 之后才会过期。过期了之后,浏览器再次发送请求到服务器端,请求新的内容。

第一次请求:

第二次请求:

注意:cache-control: max-age=600 这个是在后端的响应头中设置的。

问题:如果在max-age时间内,服务器文件有修改,这样用户就不能第一时间获取最新的信息。所以在前端每次打包静态文件的名称都是 hash 值的,这样每次请求都是新路径,就不会再去缓存中找了。

s-maxage

s-maxage=<seconds>和 max-age 功能相似,但是只有在 代理服务器 中生效,浏览器端还是会读取 max-age 到期时间。

max-stale

max-stale=<seconds>max-age过期之后,只要在 max-stale 的时间内,还可以使用过期的缓存。

重新验证

must-revalidate

设置了 max-age 缓存,如果缓存过期了,必须去服务端重新请求,重新获取数据。

proxy-revalidate

和 must-revalidate 类似,用在缓存服务器中。

no-store & no-cache

no-cache:可以在本地进行缓存,每次发起请求都要去服务器验证,如果服务器返回的请求告诉我可以使用本地的缓存,才能使用本地的缓存。(需要经过服务器端的验证)no-store是彻底不能在本地或者代理服务器存储缓存,也不会有验证环节,永远请求服务器的数据。

验证资源能否使用缓存的过程

Last-Modified

Last-Modified:表示服务端资源最后修改的时间,由服务端传递到客户端。

If-Modified-Since:表示询问服务端,从某个时间点起资源是否修改了。这个时间点一般是服务端Last-Modified返回的时间点。

Etag

Etag:表示字符串唯一标识符,也是传给客户端,用于告诉客户端,表示服务端资源发生修改了的最新标识,Etag的值一般是由文件内容生成的。

If-None-Match:表示询问服务端,某个tag字符串值是否不匹配,这个tag值一般是服务端Etag返回的最新的字符串标识符。、

总结:客户端请求服务端时,服务端在响应头添加 Last-Modified:最新的时间,Etag:最新的字符串标识符},客户端保存服务端的Last-Modified的值和Etag的值,下次请求服务器时,在请求头添加If-Modified-Since:最新的时间,Etag:最新的字符串标识符。然后服务器去检查请求头的信息,判断客户端是从缓存中读数据还是重新把服务器的数据给客户端。

no-transform

用在 proxy 服务器上,有的 proxy 会把服务器返回的内容进行压缩或者格式的转换,这个是不允许的。no-transform 告诉代理服务器不要随便的改动返回的内容。

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

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

相关文章

【程序员高效率工具】PlantUML —— 使用代码快速绘制时序图、思维导图

本篇思维导图 前言 不管是在工作还是学习&#xff0c;特别是在项目计划初期&#xff0c;我们需要画大量的图将工作内容、项目方案等进行可视化描述&#xff0c;包括但不限于时序图、类图、思维导图等等。 但是对于不经常画图&#xff0c;或者经常使用键盘的孩子&#xff0c;手…

VMware三种网络模式的摸索

VMware三种网络模式的摸索 文章目录VMware三种网络模式的摸索前言一、桥接模式简要描述拓扑图展示配置测试优缺点二、NAT模式简要描述拓扑图展示配置测试优缺点三、仅主机模式简要描述拓扑图展示配置测试优缺点3.总结前言 注意&#xff1a;所有的测试请关闭虚拟机和主机的防火…

微信小程序 - 实现手机号登录--授权并获取手机号保存至本地

详细代码请见文档最下方&#xff0c;仅供参考&#xff0c;更多需要请查看官方文档 一、 微信官方文档 | 获取手机号 这是服务端的 这是我们前端获取手机号需要给接口传递的两个参数 注意&#xff1a; 参数一&#xff1a;获取access_token需要用到小程序密钥&#xff0c;这个…

你可能不知道的20个Git命令,但真的很实用

如果您曾经浏览过git 手册&#xff08;或 run man git&#xff09;&#xff0c;那么您会注意到 git 的功能比我们大多数人每天使用的要多得多。很多这些命令都非常强大&#xff0c;可以让你的生活更轻松&#xff08;其他命令有点小众&#xff0c;但仍然很高兴知道&#xff09;。…

QT-QStackedWidget多窗口应用

前言&#xff1a; 多窗口应用&#xff0c;例如某微信&#xff0c;页面由1&#xff0c;2&#xff0c;3个布局组成。 1-基本流程 页面1控制页面2&#xff0c;通过选择页面1上的按钮或控件 页面2控制页面3&#xff0c;通过选择页面2上的按钮或控件 2-其中页面2中的页面很…

100、【树与二叉树】leetcode ——105. 从前序与中序遍历序列构造二叉树+106. 从中序与后序遍历序列构造二叉树(C++版本)

106. 从中序与后序遍历序列构造二叉树 题目描述 原题链接&#xff1a;106. 从中序与后序遍历序列构造二叉树 解题思路 中序的特点&#xff1a;左中右&#xff0c;后序的特点&#xff1a;左右中。因此可通过后序序列找到中间结点&#xff0c;然后再根据中间结点&#xff0c;分…

3、关键词与标识符

目录 一、关键词 二、标识符 一、关键词 C语言中有32个关键字&#xff1a; 注意&#xff1a;在C语言中&#xff0c;关键字是不允许作为标识符出现在程序中的。 二、标识符 C语言标识符的命名规则&#xff1a; &#xff08;1&#xff09;所有标识符必须由字母或下画线开头…

KMP算法 看这一篇就够了 图解刨析+代码

目录 问题背景 逐步剖析 KMP如何优化暴力做法 思考 公共前后缀 next数组 如何构建next数组: 代码实现 问题背景 给定一个字符串 S&#xff0c;以及一个模式串P&#xff0c; P 在字符串 S 中多次作为子串出现。 求出模式串 P 在字符串 S 中所有出现的位置的起始下标。 …

说话人识别中的Temporal pooling(时序池化)

概述 Temporal pooling&#xff08;时序池化&#xff09;是说话人识别神经网络中&#xff0c;声学特征经过frame-level变换之后&#xff0c;紧接着会进入的一个layer。目的是将维度为(bs,F,T)(bs,F,T)(bs,F,T)的特征图&#xff0c;变换成维度为(bs,F)(bs,F)(bs,F)的特征向量 …

再不来看看常用的PyCharm快捷键就out了,玩转PyCharm仅此一篇!

最近在学习Python的数据可视化项目&#xff0c;在大学有学过Python&#xff0c;还有一些基础的。目前虽说已经工作&#xff0c;但是兴趣使然&#xff0c;依然想在空闲时间学一些其他技能来充实自己&#xff0c;未雨绸缪&#xff01; 在使用工具的时候&#xff0c;必定会对工具有…

【话题:工作生活】2021年工作总结--这些人,那些事。

Hello Everyone&#xff0c; 我又开始撰写自己的工作总结了。2021年的工作总结&#xff0c;拖得太久&#xff0c;拖得我也不想写了。每次写自己一年的工作总结&#xff0c;总是要耗费我大量的时间与心力&#xff0c;有时&#xff0c;我也真的是心好累。 好了&#xff0c;懒散、…

【人工智能原理自学】隐藏层:神经网络为什么Working

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 &#x1f514;本文讲解隐藏层&#xff1a;神经网络为什么Working&#xff0c;一起卷起来叭&#xff01; 目录一、…

深度学习 11 梯度下降算法改进

数据初始化要点: 1. 梯度下降算法的三种方式: 批量梯度下降法(batch)&#xff0c;即同时处理整个训练集.小批量梯度下降法&#xff08;Mini-Batch &#xff09;每次同时处理固定大小的数据集.随机梯度下降法&#xff08;stochastic gradient descent&#xff09;, 每次随机选…

acwing基础课——约数

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板4——数学知识 - AcWing 基本思想&#xff1a; 首先&#xff0c;约数&#xff0c;又称因数。整数a除以整数b(b≠0)除得的商正好是整数而没有余数&#xff0c;我们就说a能被b整除&#xff0c;或b能整除a。a称为b的…

怎样才能过好这一生?

文章目录1. 日拱一卒&#xff0c;功不唐捐1.1 适当的时候给自己一个奖励1.2 一个人可能走的更快&#xff0c;但一群人才能走的更远1.3 通过一些事情去逼自己一把1.4 从真理中去感悟1.5 当你面临绝路时2. 梦想的意义不在于实现3. 孤独4. 烦恼5. 别总说来日方长6. 忍和韧性7. 事情…

【linux kernel】linux内核重要函数 | do_initcalls

文章目录一、导读二、do_initcalls三、构造section并添加函数&#xff08;3-1&#xff09;构造初始化调用section&#xff08;3-2&#xff09;向section中添加函数四、总结一、导读 在linux内核启动过程中&#xff0c;会向终端打印出很多的日志信息&#xff0c;从这些日志信息…

c++开源协程库libgo介绍及使用

协程这个概念&#xff0c;最近这几年可是相当地流行了。尤其 go 语言问世之后&#xff0c;内置的协程特性&#xff0c;完全屏蔽了操作系统线程的复杂细节。甚至使 go 开发者“只知有协程&#xff0c;不知有线程”了。当然 C也有高性能的协程库&#xff0c;比如我了解到的微信的…

基于微信小程序的企业职工薪资查询系统小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

卷积神经网络(CNN)详细介绍及其原理详解

文章目录前言一、什么是卷积神经网络二、输入层三、卷积层四、池化层五、全连接层六、输出层七、回顾整个过程总结前言 本文总结了关于卷积神经网络&#xff08;CNN&#xff09;的一些基础的概念&#xff0c;并且对于其中的细节进行了详细的原理讲解&#xff0c;通过此文可以十…

自动(智能)驾驶 | 4D雷达的数据集

上篇文章分享了关于Oculii 4D雷达的两篇报告。数据集是一个非常重要的研究工具&#xff0c;对于4D雷达领域来说&#xff0c;处于一个研究前沿的位置&#xff0c;鲜有公开的数据集&#xff0c;目前能找到的数据集有&#xff1a; 这些文章中的数据集有不少博主也写过&#xff0c…