HTTP缓存机制(Cache-Control)

news2024/11/16 23:50:35

文章目录

  • HTTP缓存机制


HTTP缓存机制

HTTP 协议通常应用于分布式信息系统,所谓分布式信息系统,是指以计算机网络为基础,将系统的数据与功能分别布置在不同的地方,然后再通过网络将数据与功能连接的信息系统。由于系统需要处理大量的信息,所以我们可以通过使用响应缓存的方式来提高系统性能。

在这里插入图片描述

对于客户端来说,可以将一些不经常变动的信息缓存到本地,在需要时客户端可以直接拿来使用,不必再向服务端发送请求;对于服务器来说,当客户端不能确定缓存是否有效(未过期)时,就需要再次向服务器发送请求,若缓存还可以使用,那么服务器就不必返回完整的响应,只需要返回响应行和响应头即可,减轻了服务器的压力。

客户端和服务器可以通过设置 Cache-Control 头字段来对请求和响应的缓存进行设置,HTTP 协议中为我们预先定义好了许多用来设置缓存的指令(缓存指令),使用这些指令可以覆盖客户端默认的缓存算法,而且多个缓存指令可以组合使用,只需要在每个指令之间使用逗号将其分隔开即可,例如:

Cache-Control: max-age = 60, max-stale

客户端请求中可以使用的缓存指令如下表所示:

缓存指令指令描述
no-cache不进行缓存
no-store不能在本地缓存任何有关客户端请求或服务器响应的内容
max-age = seconds设置缓存的生命周期(seconds),单位为秒,在生命周期内可以使用该缓存
max-stale [ = seconds ]告诉客户端可以使用超过缓存时间 max-age 的缓存,seconds 用来设置可以超过的时间,单位为秒,如果省略则不限制超过的时间
min-fresh = seconds要求缓存服务器返回至少还未超过指定时间(seconds)的缓存资源
no-transform不论是在请求还是响应中,都不能改变请求体或响应体的媒体类型
only-if-cached当缓存存在时,不验证缓存是否失效或过期,完全使用缓存中的内容

服务器响应中可以使用的缓存指令如下表所示:

缓存指令指令说明
public响应可以被任何缓存区缓存
private响应的消息是针对单个用户的,不能当作共享缓存处理
no-cache不进行缓存
no-store不能在本地缓存任何有关客户端请求或服务器响应的内容
no-transform不论是在请求还是响应中,都不能改变请求体或响应体的媒体类型
must-revalidate可以进行缓存,但缓存在使用之前必须先经过服务器验证缓存的有效性
proxy-revalidateproxy-revalidate 指令与 must-revalidate 指令的含义相同,不同之处在于 proxy-revalidate 指令仅适用于共享缓存
max-age = seconds设置缓存的生命周期(seconds),单位为秒,在生命周期内可以使用该缓存
s-maxage = seconds设置共享缓存的最大生命周期(seconds),单位为秒。s-maxage 指令会覆盖 max-age 指令。与之对应的私有缓存会忽略 s-maxage 指令

提示,这里的共享缓存也可以理解为是公有缓存,它里面不包含针对某个用户的数据,所以可以供所有用户使用;私有缓存则正好相反,只能针对某个用户。

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

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

相关文章

世界杯期间我使用Python生成二维码“为中国队辟谣”

二维码介绍 二维码本质上,就是一段字符串,我们可以把任意字符串,制作成一个二维码图片。在生活中,使用二维码更多的是一个URL(网址)。 引入 qrcode库 qrocde库网址:qrcode PyPI 进入网址之后…

[附源码]计算机毕业设计贷款申请审核管理系统论文Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

本地字节序与网络字节序的相互转换(IP地址、端口号)

一般数据在内存中是按照字节存储的,存储的方式分为大端和小端。在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式。因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! 如果当前主机…

年产3000吨原味奶糖生产车间工艺设计

目 录 摘 要 I Abstract II 1绪论 1 1.1原味奶糖的概念及其功能特性 1 1.2国外原味奶糖的现状 3 1.3我国的原味奶糖现状及开发前景 4 1.4原味奶糖原料的生产情况 4 2工艺流程设计 6 2.1 原味奶糖的生产工艺 6 2.1.1 溶糖与混合 7 2.1.2 连续真空薄膜熬糖 7 2.1.3 混合 8 2.1.4 …

阿里国际站-唤端技术的探索与演进

作者:黄昭 阿里ICBU买家增长技术团队 近几年用户增长领域APP推广发展迅猛,而唤端就是其中的重要技术。通过唤端拉新/促活不仅能能够将三方流量规模做大,同时二方流量也能有效利用,给网站不断带来商机,本文将为大家详细…

UE4虚幻引擎关于事件分发器的使用!

UE4虚幻引擎关于事件分发器的使用! 首先,这次就讲一下,事件分发器,在UI,Pawn,子actor如何进行事件传递! 首先!我们如果要使用事件分发器的原因是什么! 第一&#xff0…

Django(11):后台管理系统

目录后台管理系统基本操作管理平台的基本操作数据模型的注册和管理数据模型管理后台管理系统操作Xadmin管理平台Django内置了自己的后台管理系统,包含数据库管理和良好的界面。后台管理系统基本操作 在我们前面创建Django项目时,默认会有许多应用组件&a…

一次nginx “time out”故障排查

研发请求协助排查一个nginx故障。 描述如下: 在内部环境测试没问题。 打包到生产环境后,访问nginx接口地址超时。 研发比对后怀疑是nginx版本不一致导致。内部版本1.23.2,生产环境1.23.1. 收到信息第一感觉不是nginx的问题。不过先测试一…

五年测试经验,从二线到一线,下定决心一定要转自动化测试

一七年毕业以来自己工作也快三年左右了,自己最开始其实是想找java开发的,大学的毕设也是用jsp写的一个简单的web网站,无奈面试总被刷而且遇到了大量的培训机构。于是乎就转入软件测试这个行业。没想到啊转眼间一干就三年多了。 第一家公司 …

基于风驱动算法优化的lssvm回归预测-附代码

基于风驱动算法优化的lssvm回归预测 - 附代码 文章目录基于风驱动算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于风驱动算法优化的LSSVM4.测试结果5.Matlab代码摘要:为了提高最小二乘支持向量机(lssvm)的回归预测准确率&#xf…

物联网开发笔记(57)- 使用Micropython开发ESP32开发板之控制ESP32-CAM摄像头

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制ESP32-CAM摄像头。 二、环境 ESP32 ESP32-CAM摄像头 Thonny IDE 几根杜邦线 ESP32-CAM是一个开发板,它上面集成了Camera摄像头模块,可以直接用Micropython进行操作。从MicroPython官网下载的固…

语音处理的线性预测

线性预测是几乎所有现代语音编码算法的基础 – 手机 – 网络电话 (VOIP) – 军事通讯 线性预测假设语音信号的每个样本都可以从 P 个先前样本的加权和中预测出来,利用平稳性假设产生的冗余,线性预测允许数百个样本的语音帧仅由 10-15 个“预测系数”(a1 …

Java搭建宝塔部署实战毕设项目基于SSM的房间管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕设项目SSM房间管理系统源码,可以拿来做毕业设计,或者在这基础上进行二开,感兴趣的朋友自行下载来学习一下,本期把这套系统分享给大家…

华人运通与BlackBerry达成合作, 打造未来数字生命GT——高合HiPhi Z

BlackBerry近日宣布,中国领先的未来智能交通产业的创新型出行科技公司——华人运通,选择了BlackBerry QNX为华人运通的第二款旗舰车型高合HiPhi Z保驾护航,打造其自动驾驶域控制器与数字座舱域控制器。 基于BlackBerry QNX Neutrino 实时操作…

Servlet:狂神实例源码分析

目录servlet源码:servlet01启动测试总结servlet 上面就是一个web项目的典型目录,servlet处理request和response的逻辑web.xml管理路由信息index.jsp作为首页访问的页面,jsp是java server page可以认为用java和html混合写前端 源码&#xff1…

汽车电子之功能安全产品设计过程

汽车电子之功能安全产品设计过程 内容来自 驱动视界 学习为主。 1.概念阶段 2.系统阶段 3.硬件层面 4.软件层面 5.3“V” 6.大追溯关系 随着电动化、智能化的发展,越来越多的汽车配备了电子电气系统,如电传动系统、助力转向系统、自动驾驶系统等&…

数据库日常实操优质文章分享(含Oracle、MySQL等) | 11月刊

墨天轮社区正持续举办【聊聊故障处理那些事儿】DBA专题征文活动中,每月进行评优发奖,鼓励大家记录工作中遇到的数据库故障处理过程,不仅用于自我复盘与分析,同时也能帮助其他的同仁们避坑。 这里为大家整理出了11月的13篇优质文章…

Spring Cloud OpenFeign

RestTemplate 是springweb组建 作为Spring Cloud的子项目之一,Spring Cloud OpenFeign 是一种声明式、模板化的 HTTP 客户端,在 Spring Cloud 中使用 OpenFeign,可以做到使用 HTTP请求远程服务时能与调用本地方法一样的编码体验,开…

java自封装加密摘要工具类

首先 可以去看这篇文章 Java md5加密 - 酷盖的小机灵 - 博客园 MessageDigest(加密)_禅悟刂的博客-CSDN博客_messagedigest 在实际开发中,需要将用户的密码这种敏感字段加密后存储到数据库中,千万不可以用明文存储。 加密原理 为…

[旭日X3派] 初识篇 - 02

开局先给整个详细产品参数~ 处理器地平线旭日 X3M 芯片CPU四核 ARM Cortex-A531.2GHzBPU双核 1GHz,等效算力 5 TOPS内存2G/4G Byte LPDDR4存储器外置TF卡摄像头MIPI CSI 2lane 2显示接口HDMI 1 (up to 1920 1080); MIPI-DSI 1 (up to 1920 1080);USB HostUSB …