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

DigitalOcean Spaces Cache Control缓存控制元数据设置不生效问题咨询

解决方案

1. 确认资源访问权限为公开读

如果你的Spaces Bucket或者对应静态资源没有设为公开读,每次请求都会返回鉴权相关的响应头,Vary: Authorization参数会导致浏览器判断资源可能随请求身份变化,直接跳过缓存发起新请求。你可以在Spaces的文件权限设置里,将静态资源目录统一设置为公开读,或者上传文件时添加x-amz-acl: public-read元数据。

2. 修正Cache-Control元数据格式

你当前的public,max-age=86400配置缺少标准格式要求的逗号后空格,部分旧版本浏览器会解析异常导致缓存失效,调整为public, max-age=86400即可。同时要确认没有额外配置Pragma: no-cache或者指向过去时间的Expires头,这类配置会覆盖Cache-Control规则。

3. 清理Spaces CDN缓存

如果你开启了Spaces自带的CDN功能,修改元数据后需要主动 purge 对应路径的缓存,否则边缘节点仍然会返回旧的响应头,导致浏览器缓存规则不生效。你可以在Spaces的CDN设置页操作单文件或目录级别的缓存清理。

4. 区分浏览器刷新行为

普通刷新(F5)和强制刷新(Ctrl+F5/ Cmd+Shift+R)行为不同:

  • 强制刷新会主动忽略本地缓存,直接发起全量请求
  • 普通刷新会对已缓存资源发起协商缓存请求,返回304状态码而非200,属于正常的缓存校验逻辑,不是缓存失效
    如果要测试强缓存生效,可以直接在地址栏输入资源地址回车访问,不需要刷新页面。

5. 优化Django静态资源配置

如果开启了Django的ManifestStaticFilesStorage配置,静态资源URL后会自动加?v=哈希值的后缀,每次部署后哈希变化会触发浏览器重新请求资源,属于预期行为。
如果想要完全避免协商缓存请求,可以将Cache-Control调整为public, max-age=31536000, immutable,设置一年的强缓存,搭配静态资源哈希后缀使用,资源更新时URL自动变化触发新资源加载,不需要用户手动清理缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:00