You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome中资源缓存时间为何是Date加max-age?技术疑问

缓存过期逻辑与304状态码疑问

问题场景

  • 首次请求(图片上传前)的响应头:
    首次请求响应头
  • 180秒后,响应头更新为:
    180秒后响应头
  • 再间隔180秒,清除浏览器缓存后发起请求,返回200状态码:
    清除缓存后请求响应头
  • 但在此次200响应后的180秒内再次请求,却返回304状态码,对此存在疑问。

核心问题

  1. 浏览器为何会认为缓存已过期?
  2. 缓存过期时间是否等于响应头Date字段值加上Cache-Control: max-age的秒数?

解答

缓存过期时间的计算规则

是的,浏览器计算缓存过期时间的标准逻辑为:响应头的Date时间 + Cache-Control: max-age指定的秒数。例如max-age=180,即从服务器返回响应的时间(由Date字段标记)起算,180秒后缓存判定为过期。

304状态码的产生原因

清除缓存后的首次请求返回200时,浏览器会将新的响应资源、Date及max-age=180等缓存规则存入本地缓存。180秒内再次请求时,浏览器发现缓存尚未过期,但仍会发送带有If-Modified-Since(或If-None-Match)的验证请求到CDN/源服务器:

  • 若服务器确认资源未发生变更,会返回304状态码,告知浏览器可直接使用本地缓存;
  • 若资源已更新,则返回200状态码及新资源。

这是正常的缓存验证流程,并非缓存过期,目的是在节省带宽的同时确保资源有效性。

CDN缓存的特殊说明

CDN节点存在缓存更新机制,可能影响观测结果:

  • 图片上传后,CDN节点需要一定时间(如你遇到的180秒)同步源站资源,此期间不同请求可能获取到不同的响应头;
  • 清除缓存后的首次请求会触发CDN拉取最新资源,后续的304是缓存验证的正常结果,符合HTTP缓存规范。

内容的提问来源于stack exchange,提问作者J John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:07:14