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

如何为S3存储桶中的特定文件夹设置差异化缓存策略?

如何在S3存储桶实现差异化缓存策略

当然可以实现这种两种完全相反的缓存策略,通过S3的对象元数据配置,或是配合CloudFront的缓存规则就能搞定,具体方案如下:

方案一:直接配置S3对象元数据

  • 针对/assets/目录下的资源:上传时(或批量修改已有资源)设置Cache-Control元数据为public, max-age=31536000,对应1年的缓存时长。由于这些资源的文件名是基于内容哈希生成的唯一值,资源更新时文件名会同步变更,完全不用担心旧缓存无法更新的问题。
  • 针对存储桶内其他所有内容:设置Cache-Control元数据为no-cache, no-store, must-revalidate,这条规则会强制浏览器每次请求都向S3验证资源的最新状态,确保每次获取的都是最新版本。

如果是已经上传的资源,可以用AWS CLI批量修改元数据,比如修改/assets目录下所有文件的缓存设置:

aws s3 cp s3://你的存储桶名/assets/ s3://你的存储桶名/assets/ --recursive --metadata-directive REPLACE --cache-control "public, max-age=31536000"

方案二:配合CloudFront配置缓存行为(若使用CDN)

如果你的S3存储桶是通过CloudFront分发内容,可以在CloudFront中配置两条缓存行为规则:

  • 第一条规则:路径匹配/assets/*,设置缓存TTL为31536000秒,同时让CloudFront尊重S3返回的Cache-Control元数据,实现长期缓存。
  • 第二条规则:路径匹配/*(覆盖其余所有内容),设置缓存TTL为0,同时配置响应头的Cache-Control为no-cache, no-store, must-revalidate,强制每次请求都回源到S3获取最新内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:04:56