2016-11-16 128 views

回答

6

REQ:只要它在上光油到达请求值。

bereq:请求转到后端。来自req的所有变量被自动分配到bereq。但是,这些值可能略有不同,因为Varnish可能会修改客户端请求。例如,来自客户端的HEAD请求可能会转换为对后端的GET请求。

beresp:后端respose。 beresp中的任何更改都会影响respobj这是缓存的对象。 提示:如果您想要获取有关对象的任何其他信息,请将其设置为beresp

响应:传递给客户端的响应。所有的beresp值被传递到resp

解释完所有名称后得出结论:req.ttl是从请求中接收到的TTL,除非您对其进行了不同的配置,否则就意味着什么都没有。 beresp.ttl是要设置您的对象的TTL的那个。

至于什么是最好的缓存,清漆已获得最大年龄,并将其设置为beresp.ttl。所以最终没有区别。采用这种方法的困难在于,一些网络应用程序不能正确对待并最终总是发送nocache,导致清漆无法缓存。在这些情况下,您应该忽略beresp.http.cache-control中的内容并设置您自己的TTL。

一些相关的阅读材料可以在Varnish Book subroutines section中找到。

+0

“最终总是发送nocache,导致Varnish无法缓存” - 或者可能取消设置并设置我的缓存控制,对不对? 并且可以关于req.ttl的更多细节?因为你写了“这意味着什么,除非你配置不同”。这是什么意思? 其余的,非常感谢,详尽的答案。 –

+0

你说得对。 关于req.ttl,它来自请求者,它不是由你的应用程序或清漆设置的东西,大多数时候它应该被忽略,除非你希望你的请求者能够设置对象ttl。 – alejdg

+0

,除非你想让你的请求者能够设置对象ttl - 我想理解的主要内容:)非常感谢! –