首页 > 其他分享 >http协议中缓存Cache-Control详解

http协议中缓存Cache-Control详解

时间:2024-03-27 17:30:15浏览次数:20  
标签:Control 缓存 http no Cache 响应 服务器 客户端

Cache-Control 是一个 HTTP/1.1 协议中的头部字段,用于指定请求和响应遵循的缓存机制。通过这个头部,服务器可以告诉客户端响应可以被缓存多长时间,以及在什么条件下可以被缓存和重新使用。以下是一些常见的 Cache-Control 指令:

基本指令

  • no-cache
    表示响应不应该被缓存,除非得到客户端的确认。这确保了客户端总是通过服务器验证缓存的有效性。使用 no-cache 指令表示客户端可以缓存内容,但在使用之前必须向原始服务器验证缓存的有效性。这意味着每次客户端需要使用缓存时,它都会发送一个请求到服务器,以确认缓存是否仍然是最新的。服务器可以通过返回304状态码(Not Modified)来回应,告诉客户端缓存版本仍然是最新的,客户端可以使用缓存数据。如果资源已经被修改,服务器会发送新的响应数据。no-cache 适用于需要确保用户总是获取到最新数据的场景,但同时又希望建立缓存以优化性能。

  • no-store
    表示响应不应该在任何情况下被缓存,这适用于敏感信息,确保信息不会在本地存储。 与no-cache相比no-store 指令更加严格,它告诉客户端和任何中间缓存(如代理服务器)不应该存储任何版本的响应。也就是说,无论请求条件如何,每次用户请求时都需要从服务器获取完全的新响应数据。no-store 通常用于非常敏感的数据,如个人隐私信息或者银行交易页面,这些页面不应该被存储在任何地方以避免安全风险。

  • public
    表示响应可以被任何缓存(即使是通常是私有的,如浏览器缓存)缓存。

  • private
    指的是响应是私有的,例如,它只适用于单个用户,只能被用户的浏览器缓存。

  • max-age=秒
    指定一个时间段,在这段时间内,响应被认为是新鲜的。此时间从响应生成开始计算。

可选指令

  • s-maxage=秒
    类似于 max-age,但这是专门为共享缓存(如 CDN)设置的。

  • must-revalidate
    当缓存过期时,缓存必须向服务器验证缓存响应的有效性,即使用户操作是离线的。

  • proxy-revalidate
    must-revalidate 类似,但它只适用于共享缓存。

  • immutable
    表示响应体不会随时间而改变,缓存可以无限期地复用它,不需要进行重新验证。

  • no-transform
    不允许缓存修改资源内容,比如不允许压缩图片。

过期指令

  • stale-while-revalidate=秒
    表示客户端愿意接受超出最大新鲜期的响应,在后台静默地更新缓存内容。

  • stale-if-error=秒
    如果服务器发生错误,客户端愿意接受一个过时的响应。

示例

一个响应头可能包含如下的 Cache-Control 指令:

Cache-Control: public, max-age=3600

这意味着此响应可以被任何缓存缓存,并且是新鲜的,在接下来的3600秒(1小时)内。

一个请求头可能包含如下的 Cache-Control 指令:

Cache-Control: no-cache

这意味着客户端要求接收到的每个响应都必须直接来自服务器,或者至少在返回给客户端之前得到服务器的验证。

标签:Control,缓存,http,no,Cache,响应,服务器,客户端
From: https://blog.csdn.net/jkzyx123/article/details/137080163

相关文章

  • 指令cache一致性
    指令cache一致性​​N2alsogetsoptionalhardwareinstructioncachecoherency.ARMrecommendsenablingitonsystemswithalotofcoresbecausebroadcastingsoftware-issuedinstructioncacheinvalidateswouldnotbescalable.Toimplementinstructionca......
  • http协议
    HTTP协议1.定义​ 如何组件数据包,如何解析数据包2.HTTP协议的起源TCP:长连接协议,类似打电话UDP:广播协议FTP:文件服务器协议​ 基于Tcp协议发明了Http协议3.HTTP协议的特点可靠性短链接协议,也叫无状态协议每一个HTTP请求都包含一个请求和一个响应每一个Http请求头由......
  • 【HTTPS】https证书详细解释
    一、HTTPS证书是什么?HTTPS证书,通常指的是SSL证书,是一种数字证书。它用于验证网站的身份并确保数据传输的安全。当网站部署了HTTPS证书后,其URL将以"https:/“开头,而不是"http://”,这表明网站启用了SSL/TLS加密层,能够对客户端与服务器之间的通信进行加密,防止数据在传输过程中被窃......
  • SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器To
    Spring官网HTTPs://spring.iospring生态(全家桶)基于SpringFramework基础框架。但如果我们基于该基础框架开发,会面临配置繁琐,入门难度大的问题,SpringBoot则可以快速开发(简化配置,快速开发)。1.SpringBootWeb入门使用SpringBoot开发一个Web应用,浏览器发起请求/hello之后,给浏......
  • could not read Username for 'https://github.com': terminal prompts disabled on w
    https://stackoverflow.com/questions/75990435/could-not-read-username-for-https-github-com-terminal-prompts-disabled-on-w  TrysettingatemporarycredentialhandlerforGitHub:GIT_USER="your-github-username-or-email"GIT_PASS="PAT"......
  • FUSB302BMPX 可编程USB芯片控制器 接口集成电路 302B Type-C Control IC with PD
    FUSB302BMPX是一种可编程的USBType-C控制器,由安森美半导体公司生产。它支撑USBType-C检测,包含衔接和方向,并集成了USBBMC功率输送协议的物理层,可完成高达100W的电源和角色交换。该控制器适用于希望完成DRP/SRC/SNKUSBType-C衔接器的系统规划人员。此外,FUSB302BMPX支撑USB3......
  • 详解SSL证书系列(7)HTTP的三大缺点
    我们已经了解到HTTP协议具有相当优秀和方便的一面,然而HTTP并非只有好的一面,事物皆具有两面性,它也是有不足之处的,那么HTTP有哪些缺点呢?窃听风险由于HTTP本身不具备加密的功能,所以也无法做到对通信内容进行加密,即HTTP报文是使用明文方式发送的。如果要问为什么通信时不加密是一......
  • 【https】如何让http升级成https
    1、获取SSL证书:SSL证书是用于加密服务器与客户端之间通信的公钥证书。你需要从可信的证书颁发机构(CA)购买SSL证书。或者登录joyssl官网输入Invitation码230915即可免费获取SSL证书。根据你的需求,可以选择不同类型的证书,如单域名证书、多域名证书或通配符证书。2、生成CSR......
  • zabbix配置https访问
    1、启用ssl模块,apache2不用再去安装mod_ssl模块sudoa2enmodssl 2、创建存放证书文件的目录并赋予所有权限sudomkdir/etc/apache2/sslsudochmod777/etc/apache2/ssl 3、将证书文件上传至刚创建的目录下 4、将 /etc/apache2/sites-available/000-default......
  • Redis发布订阅模式解决Guava Cache本地缓存刷新问题
    为什么要用本地缓存可以加快资源访问速度,减少第三方IO延迟,也避免了网络调用的开销,将数据存储在本地jvm内存中可以减少外部系统的压力,可以将频繁访问、且更新场景较少的数据缓存起来,降低对远程服务或者数据库的请求次数,降低外部系统负载,提供系统整体的稳定性缺点:但是同时也得......