普通清漆:beresp& resp,bereq& REQ; req.ttl& beresp.ttl

时间:2016-11-16 09:14:32

标签: caching varnish

请告诉我,这些概念之间的区别是什么?我没有在Varnish的文件中找到任何答案。他们只是操作这些概念,仅此而已。

什么更适合用于缓存:缓存控制头中的beresp.ttl或max-age?

如果你可以用很少的例子来做 - 请这样做:)

2 个答案:

答案 0 :(得分:9)

req:请求值一到达Varnish就会显示。

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

beresp:后端等待。 beresp 中的任何更改都会影响 resp obj ,它们是缓存的对象。 提示: 如果您想要获取对象的任何其他信息,请将其设置为 beresp

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

在所有名称解释之后,基本的结论是 req.ttl 是从请求中收到的TTL,除非您以不同的方式配置它,否则它没有任何意义。 beresp.ttl 是要设置对象TTL的那个。

关于什么是最适合缓存的,Varnish已经获得了max-age并将其设置为beresp.ttl。所以最后没有区别。使用它的难点在于,某些Web应用程序不会正确处理 max-age ,并最终总是发送nocache导致Varnish不进行任何缓存。在这些情况下,你应该忽略beresp.http.cache-control中的内容并设置你自己的TTL。

可以在Varnish Book subroutines section

中找到一些在本主题中进一步深化的相关阅读材料

答案 1 :(得分:0)

您可以从这里获得有关 vcl 对象的详细概述

https://varnish-cache.org/docs/6.6/users-guide/vcl-variables.html