varnish 是如何处理动态内容的?

How does varnish deal with dynamic content?

我正在研究缓存,我正在研究用于缓存的清漆。我想知道清漆如何处理动态生成的内容?

到处都有人说你不应该真正缓存可能会发生很大变化的内容,但另一方面,当我查看 Whosebug 的响应 headers 时,我看到页面是通过清漆提供的.

这里的内容每秒钟都在变化,那么这到底是怎么回事呢?请问这个问题有点简单,等这个问题出来我再研究一下。

您需要定义动态:

  • 如果内容取决于用户(例如通过 Cookie),则不应缓存它,因为您会有很多不同的内容,并且您的 HIT/MISS 比例不会很高,因为每个用户都有一个不同的内容。
  • 如果内容及时变化,你可以随时缓存内容,例如几秒钟。
  • 如果内容随时间发生变化,更好的选择是将"static content"与动态内容分开。您可以缓存页面模板并调用 ajax 来刷新内容。您也可以使用 esi,这是一项古老的技术,但它允许您在页面中指定不同的 "zones",每个都有其缓存持续时间。
  • 您可以从 IMS 请求中受益。告诉后端仅当响应主体自上次请求以来发生变化时才发送响应主体可以为您节省大量处理时间。我认为清漆从版本 4

关于 Whosebug 架构,您可以阅读 Nick Craver 的博客 post 了解很多:http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/