我有一个主要是静态站点,其中包含一个特定的动态页面,每次源服务器被新请求命中时,我都放置了一个 max-age=7200 的缓存标头和一个等于新 GUID 的 ETag。
我正在通过 Fiddler 检查此 .aspx 页面的响应,并注意到我通过 CDN 访问它的前几次 ETag 不断变化(这意味着尽管最大年龄为 7200,但源服务器被击中了 3-4 次)。然后我达到了一个点,我将在 2 小时(7200 秒)的过程中刷新,并且尊重 max-age 并且 ETag 保持不变。
在这 2 个小时过去后,我注意到一个带有年轻缓存年龄和新 ETag 的新响应(假设它是“12345678”。但是,随后的请求再次忽略了我的 max-age 并使用新的 ETag 从原点提取了一个更新的副本。我又提出了几个请求,只是为了每次都看到新的 ETag。
然后,我再次点击刷新,瞧,我从几个请求中显示了相同的响应和 ETag“12345678”。
发生这种情况是因为正在调用不同的边缘节点并且它们在缓存到期时独立地从源中填充?是否有时我可能会从不同的边缘节点获取内容,因此我得到不同的 ETag,但有时我会被锁定到一个特定的边缘节点,该节点尊重完整的 7200 秒的 max-age?