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

如何控制通过AWS CloudFront分发内容的浏览器缓存时长?

控制CloudFront+S3架构下的浏览器缓存时长

好问题!其实在S3+CloudFront的架构里,浏览器的缓存时长和CloudFront的缓存时长是可以灵活分开控制的,我结合你的场景给你梳理几个实用方案:

方法一:用S3的Cache-Control元数据精准区分控制

你之前用到的max-age是通用参数,会同时作用于浏览器和CloudFront,但Cache-Control还有个专门针对**共享缓存(比如CDN、代理服务器)**的s-maxage参数——刚好可以用来单独指定CloudFront的缓存时长,而max-age就专门留给浏览器。

举个例子,给S3文件设置这样的元数据:

Cache-Control: max-age=3600, s-maxage=86400

这就意味着:

  • 用户浏览器会把这个文件缓存1小时(3600秒)
  • CloudFront则会缓存这个文件1天(86400秒)
    如果不指定s-maxage,CloudFront会默认沿用max-age的值作为自己的缓存时长。

方法二:通过CloudFront行为批量配置浏览器缓存规则

如果你不想逐个修改S3文件的元数据,想要统一控制所有(或某一类)文件的浏览器缓存策略,可以在CloudFront的分发行为里设置:

  1. 打开你的CloudFront分发控制台,找到对应的**行为(Behavior)**并进入编辑页面
  2. 找到「浏览器缓存设置」(Browser Cache Settings)选项
  3. 选择「自定义」(或新版的「自定义缓存策略」),然后设置你需要的max-age值,同时可以选择是否开启「覆盖源站的Cache-Control头」
    这种方式适合批量生效的场景,比如全站静态资源统一设置浏览器缓存10分钟,而且如果开启了覆盖,CloudFront的配置会优先于S3的元数据生效。

补充:缓存规则的优先级

这里给你提个醒,缓存规则的生效优先级是:
CloudFront行为的浏览器缓存设置 > S3对象的Cache-Control元数据 > CloudFront默认缓存规则
所以如果两种配置都用了,以优先级高的为准。


内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:31:30