我正在使用 Google Cloud CDN 缓存 HTML 页面。
我已经根据文档配置了所有正确的标题,并且页面缓存很好。现在,我想更改它,使其仅在请求没有 cookie 时缓存,即没有cookie设置标头。
我的理解是,这只是更改我的源服务器以向页面的所有vary: cookie响应添加标头,然后仅添加缓存标头并且在请求上没有设置标头的情况。Cache-Control: publicCache-Control: max-age=300cookie
但是,这不起作用。使用curl我可以看到,vary: cookie当我发送带有和不带有 cookie 的请求时,所有缓存标头(标头)都按预期设置,但我从来没有在没有 cookie 的请求上获得缓存命中。
深入研究 Cloud CDN 日志,我看到每个没有cookie标头的请求都cacheFillBytes填充了与响应大小相同的数字 - 而不是针对cookie标头设置了值的请求(如预期的那样)。
因此,看起来 Cloud CDN 正在尝试按预期填充没有 cookie 的请求的缓存,只是我从来没有收到缓存命中- 即cacheFillBytes每次都cacheHit: true没有出现在日志中。
有没有人遇到过类似的事情?我已经三重检查了我所有的标头是否有错别字,实际上只是删除vary: cookie标头就可以使缓存按预期工作,所以我几乎可以肯定我的配置在标头和 Cloud CDN 认为可缓存的内容方面是正确的。
Cloud CDN 是否应该vary: cookie像我期望的那样处理?文档建议它处理任意变化的标头。如果是这样,为什么我会cacheFillBytes在每个请求上看到Cache-Control: public并Cache-Control: max-age=300设置响应,但cacheHit: true在任何后续请求中都curl看不到 a正在填充几个不同的边缘缓存)?