首页 > 其他分享 >请解释下Expires和Cache-Control有什么区别?

请解释下Expires和Cache-Control有什么区别?

时间:2024-12-02 09:47:21浏览次数:10  
标签:Control 缓存 HTTP Cache max Expires

ExpiresCache-Control 都是 HTTP 响应头,用于控制浏览器缓存,但它们在机制和使用上有一些关键区别:

Expires:

  • 机制: Expires 使用一个绝对的日期时间值来指定缓存的过期时间。例如 Expires: Wed, 21 Oct 2025 07:28:00 GMT
  • 缺点: 依赖客户端和服务器的时间同步。如果客户端时间设置不准确,缓存机制可能会失效。
  • HTTP 版本: HTTP/1.0 引入,在 HTTP/1.1 中仍然支持,但被 Cache-Control 逐渐取代。
  • 示例: Expires: Thu, 01 Dec 2024 16:00:00 GMT

Cache-Control:

  • 机制: Cache-Control 使用更细粒度的指令来控制缓存行为,例如 max-ageno-cachepublicprivate 等。 max-age 指定缓存的有效时长,以秒为单位。例如 Cache-Control: max-age=3600 表示缓存有效期为 1 小时。
  • 优点: 不依赖客户端时间,更灵活和可靠。
  • HTTP 版本: HTTP/1.1 引入,是现代 Web 开发推荐使用的缓存控制方式。
  • 常用指令:
    • max-age=<seconds>: 指定缓存的新鲜度,单位为秒。
    • no-cache: 强制浏览器每次都向服务器验证缓存的新鲜度,即使本地缓存仍然有效。
    • no-store: 禁止浏览器缓存响应。
    • public: 允许任何缓存(包括代理服务器)缓存响应。
    • private: 只允许客户端浏览器缓存响应,不允许代理服务器缓存。
    • must-revalidate: 如果缓存过期,浏览器必须向服务器验证缓存的新鲜度 before 使用它。
    • immutable: 指示资源在给定的时间内不会改变,浏览器在 max-age 指定的时间内不需要重新验证资源。

最佳实践:

  • 优先使用 Cache-Control: 它更灵活、可靠,并且是 HTTP/1.1 的标准。
  • 同时设置 ExpiresCache-Control (可选): 为了兼容 HTTP/1.0 的客户端,可以同时设置 ExpiresCache-Control,但 Cache-Control 的优先级更高。 当两者同时存在时,浏览器会忽略 Expires
  • 根据资源类型设置合适的缓存策略: 对于静态资源(例如图片、CSS、JavaScript 文件),可以使用较长的 max-age 值;对于动态资源,可以使用较短的 max-age 值或 no-cache

总结:

特性 Expires Cache-Control
HTTP 版本 1.0 1.1
时间表示 绝对时间 相对时间 (max-age) 或指令
客户端时间依赖
灵活性
推荐使用

希望以上解释能够帮助你理解 ExpiresCache-Control 的区别。

标签:Control,缓存,HTTP,Cache,max,Expires
From: https://www.cnblogs.com/ai888/p/18580982

相关文章

  • 【page cache】回写机制
    writeback回写bufferIO通过pagecache进行缓存,减少对底层存储设备的直接读写,同时能够提高整体性能写入到pagecache的数据不会立刻写入后端设备,而是标记为“脏”,并被加入到脏页链表,后续由内核中的回写进程周期性的将脏页写回到底层存储设备下面主要分析pagecache回写......
  • STM32G4系列MCU的Direct memory access controller (DMA)功能之一
    目录概述1DMA介绍1.1DMA的描述1.2DMA的主要特性2DMA的应用2.1DMA1和DMA22.2DMA的映射关系3DMA的功能描述3.1架构框图3.2DMA引脚和内部信号3.3DMA传输数据3.4 DMA仲裁 概述本文主要介绍STM32G4MCU的DMA功能,包括功能概述,应用特性,框架结构等内容。1......
  • 3、.Net UI库:HZHControls - 开源项目研究文章
    HZHControls是一个开源的WinForms控件库,专为.NETFramework4.0及以上版本设计,提供了一套丰富、美观且扁平化的控件集合,非常适合用来快速开发具有Web风格的C/S架构应用程序。以下是HZHControls的一些关键特点和组件介绍:1、开源:HZHControls完全开源,允许用户根据自己......
  • 【AIGC】阻击Flux!SD 3.5也出官方ControlNet了!
    前段时间,Flux团队放出了FluxTools,而这两天StabilityAI也出了SD3.5的官方ControlNet模型了,目前模型和代码已经开源本次放出的三个ControlNet模型是针对8B的SD3.5Large模型,包括三个模型:Blur,Canny,Depth。有需要可以扫描下方,免费获取其中Blur模型类似ControleTil......
  • Let'sGoFurther - Chapter 19: Building, Versioning and Quality Control
     $makemigrationname=create_example_table run:gorun./cmd/apipsql:psql${GREENLIGHT_DB_DSN}migration:@echo'Creatingmigrationfilesfor${name}...'migratecreate-seq-ext=.sql-dir=./migrations${name}up:......
  • 自定义一个WinForm个性化的TabControl
    系列文章目录第一章自定义一个WinForm异形按钮第二章自定义一个WinForm圆角文本框第三章自定义一个WinForm个性化的TabControl文章目录系列文章目录前言一、效果展示自定义TabControl效果展示二、TabControl自定义1.创建一个MyTabControl2.自定义并暴露出一些常......
  • 主动噪声控制(Active Noise Control)
    ANC降低噪声的方法从两个大方向来分,可以分为被动降噪和主动降噪。被动降噪通常有三种降噪措施,即在声源处降噪、在传播过程中降噪以及在人耳处降噪。主动降噪是通过降噪系统产生与外界噪音相等的反向声波,将噪声中和,从而实现降噪的效果,所有的声音都由一定的频谱组成,如果可找到......
  • Windows下安装 和使用Memcached,附memcached-win64-1.4.4-14安装包
    前言大家好,我是小徐啊。memcached是我们在Java开发中常用到的一款软件,主要用作缓存来使用。但是windows下的安装包比较难找。我之前通过好多方法,终于找到了memcached的windows的安装包。今天就来介绍下如何在windows下安装和使用memcached。文末附获取方式。如何安装首先,需要将......
  • CSC3050 Project 4: Cache Simulation
    CSC3050Project4:CacheSimulationCSC3050TeachingGroupNovember20,20241IntroductionCacheisanimportantcomponentofaCPUsystemthathasasignificantimpactoncomputerperformancebyreducingmemoryaccesstimes.Thefocusofthisprojectis......
  • Flink 热存储维表 使用 Guava Cache 减轻访问压力
    目录背景GuavaCache简介实现方案1.项目依赖2.GuavaCache集成到Flink(1)定义Cache(2)使用Cache优化维表查询3.应用运行效果(1)维表查询逻辑优化(2)减少存储压力GuavaCache配置优化总结背景在实时计算场景中,Flink应用中经常需要通过维表进行维......