首页 > 其他分享 >Cache-Control

Cache-Control

时间:2024-07-25 11:40:51浏览次数:9  
标签:Control 缓存 Cache 响应 指令 客户端

Cache-Control 是一个 HTTP 协议中关于缓存的响应头,它用于指定所有缓存机制在整个请求/响应链中必须服从的指令。这些指令主要用于控制浏览器和其他中间缓存如何缓存和重新使用已缓存的响应。Cache-Control 提供了比 Expires 头部更精确和灵活的缓存控制方式。
基本概念

    定义:Cache-Control 是一个 HTTP 头,用于控制浏览器和其他中间缓存如何缓存和重新使用已缓存的响应。
    位置:Cache-Control 可以在请求头或响应头中设置。
    作用:指定请求和响应遵循的缓存机制,包括何时、如何缓存响应以及如何验证缓存的有效性。

常用指令

Cache-Control 的值是一组由逗号分隔的指令,以下是一些常见的指令及其说明:

指令    说明
public    所有内容都将被缓存(客户端和代理服务器都可缓存)。
private    内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)。
no-cache    指示浏览器忽略资源缓存副本,强制到服务器获取资源(但允许缓存协商)。
no-store    禁止使用任何缓存策略,客户端每次请求都需要服务端给予最新的响应。
max-age=xxx    缓存的内容将在 xxx 秒后失效,这个选项只在 HTTP 1.1 中可用。
must-revalidate    如果缓存的内容失效,请求必须发送到服务器进行重新验证。
proxy-revalidate    类似于 must-revalidate,但仅适用于共享缓存(如代理服务器)。
s-maxage=xxx    类似于 max-age,但专门为共享缓存(如 CDN)设置,优先级高于 max-age。
no-transform    告诉中间代理不要改变资源的格式。
工作原理

当浏览器或其他客户端请求资源时,它会检查 Cache-Control 头部以确定是否可以从缓存中获取资源。如果 Cache-Control 指示资源是缓存的,并且缓存仍然有效(例如,max-age 指令指定的时间尚未过期),则客户端将使用缓存的响应而不是向服务器发送新的请求。如果缓存已过期或 Cache-Control 指示不进行缓存(如 no-store 或每次请求都需验证的 no-cache),则客户端将向服务器发送请求以获取新的响应。
部署与配置

Cache-Control 响应头可以部署在服务端(如 Apache、Nginx 等服务器程序)或直接在代码中添加。通过合理配置 Cache-Control,可以显著提高网站的访问速度和性能,同时保护敏感信息不被缓存。
示例

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

http

Cache-Control: public, max-age=3600

这意味着此响应可以被任何缓存缓存,并且是新鲜的,在接下来的 3600 秒(1 小时)内,客户端可以直接从缓存中获取响应而无需向服务器发送请求。
结论

Cache-Control 是 HTTP 缓存控制中最重要和灵活的机制之一。通过合理配置 Cache-Control 指令,可以有效地管理缓存行为,提高网站性能并保护用户隐私。

标签:Control,缓存,Cache,响应,指令,客户端
From: https://www.cnblogs.com/gaoyanbing/p/18322658

相关文章

  • @RestController注解
    1.引言在现代的JavaWeb开发中,Spring框架因其简洁、高效和强大的功能而受到广泛欢迎。SpringMVC是Spring框架的一个重要组成部分,用于构建Web应用程序。@RestController注解是SpringMVC提供的一个关键注解,用于简化RESTfulWeb服务的开发。本文将详细讲解@RestController......
  • 每天5分钟复习OpenStack(十四)Bcache技术<2>
    Bcache是Linux内核块设备层Cache,支持将一个或多个快速设备(如SSDNVME)作为一个或多个慢速设备(SATAHDD)的缓存设备.阅读本文章你将学会:sgdisk分区工具使用。Bcache添加、删除缓存盘和数据盘。Bcache状态的查询。Bcache的缓存替换策略。Bcache的缓存模式。部署环境说......
  • ADAU1761的AVC音效算法详解(Automatic Volume Control)
    作者的话AVC,AutomaticVolumeControl,自动音量控制,这是一个很有特点的算法,我们来看看他在哪里?怎么去用。硬件准备ADAU1761开发板产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.28686332WA8nC3&id=38240607959USBi仿真器产品链接:https:......
  • Warning formula.jws.json update failed, falling back to cached version
    Warning:formula.jws.json:updatefailed,fallingbacktocachedversion.MacOS执行服务启动命令时,显示下载失败警告,导致无法启动服务MacBook-Pro~%brewservicesstartnginx==>Downloadinghttps://formulae.brew.sh/api/formula.jws.json########......
  • 使用ControllerAdvice定义了全局异常处理器但返回不生效
    @Slf4j@ControllerAdvicepublicclassGlobalExceptionHandler{ @ExceptionHandler(Exception.class) publicAjaxResultexception(Exceptionexception){ log.error("exception:{}",exception.getMessage()); returnAjaxResult.error(exception.getMe......
  • BCGSoft BCGControlBar for .NET Crack
    BCGSoftBCGControlBarfor.NETCrackBCGSoftBCGControlBarfor.NETGreatFeatures:MicrosoftOffice-styleRibbonBarVisualStudio-likeDockingPanesVisualThemesCustomizableToolbarsandMenusGridandReportcontrollers......
  • Memcached开发(十):性能调优与监控
    目录1.Memcached性能调优1.1内存配置1.2连接数优化1.3缓存淘汰策略1.4多线程优化1.5网络性能优化2.Memcached监控2.1基础监控2.2内存监控2.3连接监控2.4LRU监控2.5命令监控3.Memcached性能调优实战3.1配置优化3.2监控报警3.3性能测试4.Memca......
  • kubernetes核心概念 Controller控制器之StatefulSet
    Kubernetes核心概念Controller之StatefulSet控制器一、StatefulSet控制器作用StatefulSet是用来管理有状态应用的控制器。StatefulSet用来管理某Pod集合的部署和扩缩,并为这些Pod提供持久存储和持久标识符。参考:https://kubernetes.io/zh/docs/concepts/workl......
  • ControlMyMonitor、MultiMonitorTool、autohotkey 设置笔记本和台式机切换屏幕
    一、背景1.1台笔记本、1台台式机共用一个显示器。2.显示器1个vga输入、1个hdmi输入3.笔记本通过hdmi转vga连到显示器,台式机通过HDMI连到显示器二、需求通过键盘切换显示器输入。三、软件介绍ControlMyMonitor:控制显示器输入方式(选择vga、hdmi)MultiMonitorTool:控制电脑在哪......
  • thinkPHP/fastAdmin框架使用memcached缓存
    1.安装memcached扩展: 2.重启PHP,在thinkPHP或者fastAdmin启用扩展(开放相应端口:例如11211) 在fastAdmin中,则需修改config.php里面的cache配置: 3.实际运行测试:  第一个信息正常显示说明运行成功,第二个显示false,说明缓存删除成功......