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

Cloud CDN签名URL缓存配置:重复生成签名URL能否命中缓存?

解决方案:Cloud CDN签名URL下实现缓存命中(304)

你的问题核心是Cloud CDN默认将签名URL的参数纳入缓存键,导致每次新生成的签名(参数不同)被视为全新请求,触发回源。通过以下配置可以解决:

1. 调整缓存键规则,排除签名相关参数

Cloud CDN允许自定义缓存键,你需要将签名URL的三个核心参数从缓存键中排除:Expires、Signature、KeyName。这样只要原资源路径一致,不管签名怎么变,CDN都会匹配同一个缓存条目。

操作方式:

  • 控制台:进入负载均衡器的后端服务配置,找到Cloud CDN的「缓存键」设置,选择「排除指定查询参数」,添加上述三个参数。
  • gcloud命令:
    gcloud compute backend-services update [你的后端服务名] --global \
      --cache-key-include-query-string=False \
      --cache-key-exclude-query-params="Expires,Signature,KeyName"
    

2. 确保源站(Cloud Storage)返回正确的缓存头

Cloud Storage对象需要配置合适的Cache-Control头,同时保证ETag存在(Cloud Storage默认会为对象生成ETag):

  • 设置Cache-Control为公共缓存且带有合理的有效期,比如:
    gsutil setmeta -h "Cache-Control: public, max-age=86400" gs://[你的存储桶名]/[目标对象路径]
    
    这个配置会让CDN缓存该对象24小时,后续请求命中缓存时,CDN会对比请求的If-None-Match头和缓存的ETag,返回304状态码。

3. 安全注意事项

  • 排除签名参数不会影响签名验证:Cloud CDN会先验证签名的合法性,再处理缓存逻辑。只要签名无效,请求会直接被拒绝,不用担心未授权访问缓存内容。
  • 合理设置签名有效期:即使CDN缓存未过期,签名过期后的请求仍会被拦截,所以无需担心缓存内容在签名失效后被非法访问。

总结:通过以上两步配置,就能实现「缓存URL不变、签名URL更新」时,CDN命中缓存并返回304状态码,避免重复回源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:16