Caching varnish如何处理动态内容?

Caching varnish如何处理动态内容?,caching,reverse-proxy,varnish,Caching,Reverse Proxy,Varnish,我正在研究缓存,我正在研究缓存的清漆。我想知道varnish如何处理动态生成的内容 到处都有人说,你不应该真正缓存可能会发生很大变化的内容,但另一方面,当我查看stackoverflow的响应标题时,我看到页面通过varnish提供 这里的内容一秒一秒地变化,那么这是如何工作的呢?如果这是一个有点简单的问题,请原谅,在这个问题结束时,我将进一步研究。您需要定义动态: 如果内容取决于用户(例如通过Cookies),则不应缓存该内容,因为您将拥有大量不同的内容,而且您的命中/未命中率不会很高,因为

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

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


这里的内容一秒一秒地变化,那么这是如何工作的呢?如果这是一个有点简单的问题,请原谅,在这个问题结束时,我将进一步研究。

您需要定义动态:

  • 如果内容取决于用户(例如通过Cookies),则不应缓存该内容,因为您将拥有大量不同的内容,而且您的命中/未命中率不会很高,因为每个用户都有不同的内容
  • 如果内容在时间上发生了变化,则始终可以缓存一点内容,例如几秒钟
  • 如果内容随时间变化,更好的选择是将“静态内容”与动态内容分开。您可以缓存页面模板并进行ajax调用以刷新内容。您也可以使用esi,这是一项古老的技术,但它允许您在页面中指定不同的“区域”,每个区域都有其缓存持续时间
  • 您可以从IMS请求中获益。告诉后端仅当响应正文自上次请求以来发生更改时才发送响应正文可以节省大量处理时间。我认为varnish从第4版就可以做到这一点
至于stackoverflow架构,阅读Nick Craver的博客文章,您可能会学到很多: