Microsoft Azure CDN 中的缓存内容过早过期
Cached content in Azure CDN from Microsoft expires too early
我们正在使用标准 Microsoft Azure CDN 为 Web 应用程序提供图像。这些图像被请求为 /api/img?param1=aaa¶m2=bbb,所以我们缓存每个唯一的 URL。缓存持续时间为 7 天。我们还覆盖了“Cache-Control”header,以便客户端浏览器仅缓存图像 1 小时。
问题是,图像不会在缓存中保留 7 天。在请求图像后的第一天,它们似乎在 CDN 中(我验证了 X-Cache header 和它 returns “TCP_HIT”),但是如果我同样的请求在 2-3 天后,大约 25% 的图像不再被缓存(X-Cache header 是“TCP_MISS”)。源站接收并记录请求,所以我确定他们绕过了 CDN。
这有什么解释吗?我是否必须设置其他参数才能正确缓存图像?
我们使用以下设置:
- 缓存规则“缓存每个唯一 URL”
- 规则引擎:
- 如果 URL 路径以 /api/img
开头
- 然后缓存过期:[缓存行为] 覆盖,[持续时间] 7 天
- 然后修改响应header:覆盖,“Cache-Control”,“public,max-age=3600”
来自 CDN 产品组的一些人:
- 对于除 Verizon Premium SKU 以外的所有 SKU,最大使用期限和缓存过期是一回事,因此 2c 覆盖 2b。
- 如果条目未被使用,CDN 保留从 CDN 清除条目的权利 - 使用 LRU 算法逐出缓存项。
- Verizon Premium SKU offers 具有两种不同年龄值的能力,一种用于浏览器到边缘(“外部最大年龄”),另一种用于边缘到源(原始到期时间,或强制覆盖时间 - 请参阅文档)。
我们正在使用标准 Microsoft Azure CDN 为 Web 应用程序提供图像。这些图像被请求为 /api/img?param1=aaa¶m2=bbb,所以我们缓存每个唯一的 URL。缓存持续时间为 7 天。我们还覆盖了“Cache-Control”header,以便客户端浏览器仅缓存图像 1 小时。
问题是,图像不会在缓存中保留 7 天。在请求图像后的第一天,它们似乎在 CDN 中(我验证了 X-Cache header 和它 returns “TCP_HIT”),但是如果我同样的请求在 2-3 天后,大约 25% 的图像不再被缓存(X-Cache header 是“TCP_MISS”)。源站接收并记录请求,所以我确定他们绕过了 CDN。
这有什么解释吗?我是否必须设置其他参数才能正确缓存图像?
我们使用以下设置:
- 缓存规则“缓存每个唯一 URL”
- 规则引擎:
- 如果 URL 路径以 /api/img 开头
- 然后缓存过期:[缓存行为] 覆盖,[持续时间] 7 天
- 然后修改响应header:覆盖,“Cache-Control”,“public,max-age=3600”
来自 CDN 产品组的一些人:
- 对于除 Verizon Premium SKU 以外的所有 SKU,最大使用期限和缓存过期是一回事,因此 2c 覆盖 2b。
- 如果条目未被使用,CDN 保留从 CDN 清除条目的权利 - 使用 LRU 算法逐出缓存项。
- Verizon Premium SKU offers 具有两种不同年龄值的能力,一种用于浏览器到边缘(“外部最大年龄”),另一种用于边缘到源(原始到期时间,或强制覆盖时间 - 请参阅文档)。