【发布时间】:2021-06-03 15:31:00
【问题描述】:
我们使用标准 Microsoft Azure CDN 为 Web 应用程序提供图像。这些图像被请求为 /api/img?param1=aaa¶m2=bbb,因此我们缓存了每个唯一的 URL。缓存期限为 7 天。我们还覆盖了“Cache-Control”标头,以便客户端浏览器仅缓存图像 1 小时。
问题是,图像不会在缓存中保留 7 天。请求图像后的第一天,它们似乎在 CDN 中(我验证 X-Cache 标头并返回“TCP_HIT”),但是如果我在 2-3 天后发出相同的请求,大约 25% 的图像不再缓存(X-Cache 标头是“TCP_MISS”)。源服务器接收并记录请求,所以我确信它们绕过了 CDN。
对此有什么解释吗?是否必须设置其他参数才能正确缓存图像?
我们使用以下设置:
- 缓存规则“缓存每个唯一的 URL”
- 规则引擎:
- 如果 URL 路径以 /api/img 开头
- 然后缓存过期:[缓存行为] 覆盖,[持续时间] 7 天
- 然后修改响应头:Overwrite, "Cache-Control", "public, max-age=3600"
【问题讨论】: