【发布时间】:2019-12-11 02:45:41
【问题描述】:
我将 google CDN 与 google 负载均衡器一起使用,它有一些后端服务,每个服务都有不同的 google CDN 设置,如下所示。
service A: google CDN disabled (API server)
service B: google CDN enabled, 1day (Cache-Control: public, max-age=86400), cache-key: full URL
service C: google CDN enabled, 1year (Cache-Control: public, max-age=31536000), cache-key: full URL
问题是,service C 收到来自 google 负载平衡器的请求,昨天已请求该 URL 并正确处理。 (status 200, with Cache-Control header and Content-Length)
它并不总是发生,例如,在从我们的服务器返回响应之后,谷歌负载均衡器返回响应而不进行查询。但大约一天过去了,他们又开始问了。请注意,我提出了几乎相同的地理位置。
经过一番谷歌搜索后,我已经在 SO 上找到了以下链接,上面说 google CDN 积极驱逐其内容(总共只有 10MB 缓存大小), https://stackoverflow.com/a/54031267/1982282
而且 google CDN 不保证尊重 max-age。 Google Cloud CDN ignores max-age over 3600
但上述问题的原因是,真的是这种激进的驱逐吗?
实际上,我们的服务器仍处于开发阶段,因此没有大量流量,总缓存大小也只有 10MB 左右。但以我个人的感觉,我无法相信谷歌 CDN 会如此努力地驱逐内容(在 1 天内,10MB+ 大小)。
有人可以分享您关于 google CDN 驱逐率的经验吗?
问候,
【问题讨论】:
-
大多数 CDN 将驱逐一天内仅访问几次的内容,如果不是更早的话,因为 CDN 缓存旨在以接近容量的方式运行。如果您的内容不公开/其他人没有访问它,您会发现它很快就被驱逐了。这通常适用于您只是测试事物并且只有您在访问它时。请注意,总缓存大小不是 10MB - 链接的答案可能已经解释了对象的最大大小(旧网络服务器为 10MB,这很少见!)。几乎所有现代网络服务器都支持 Range 请求,这意味着每个对象的最大大小为 5TB。
标签: google-cloud-cdn