问题描述
因此,我最近再次探索了许多网站的基础架构,并开始非常仔细地检查 http 响应标头。
做了这么久,我觉得很明显,如果你登录一个网站,它无法在显示动态内容的同时显示来自Fastly的缓存主文档页面。事实证明,我错了。
我认为这是可能的唯一方法是提供基于某些 cookie 的缓存页面(我觉得我在某处读到它不安全,但如果我错了,请告诉我)
另外,我知道 qz.com 是一个 Javascript 应用程序,但我在禁用 Javascript 时发现了这一点。当我禁用 Javascript 并在签名时浏览网站时,它仍然显示我已登录的指示符。禁用 cookie 后,登录指示符离开。
当我在登录后导航到新页面时,考虑到登录后的年龄从 0 开始然后上升,看起来缓存只是根据您的 cookie 提供的。 (我认为它重置了)
如果不是这样,谁能告诉我如何做到这一点?
我已阅读此 https://www.section.io/docs/modules/varnish-cache/how-tos/dynamic-caching/ 并且我敢打赌答案已写在此文档/文章中。
谢谢!
解决方法
打孔确实是将您的 HTTP 响应分成几个片段的一种非常常见的方法。这些片段用于呈现不可缓存的数据。
AJAX 是一种常见的打孔技术,但它是在 Javascript 中完成的。
Edge Side Includes (ESI) 是 Varnish 支持的服务器端替代方案。
Varnish 还提供其他机制来执行有状态逻辑。我有一个幻灯片,描述了缓存个性化数据的各种机制:https://speakerdeck.com/thijsferyn/caching-the-uncacheable-with-varnish-php-london-2020