普通清漆:beresp & resp, bereq & req; 的区别req.ttl & beresp.ttl
Common varnish: difference between beresp & resp, bereq & req; req.ttl & beresp.ttl
请告诉我,这些概念有什么区别?我没有在 Varnish 的文档中找到任何答案。他们只是操作这些概念,仅此而已。
什么更适合用于缓存:beresp.ttl 或 max-age in Cache-control header?
如果你能通过一些小例子做到这一点 - 请去做 :)
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。所以最后没有区别。使用它的困难在于一些网络应用程序没有正确处理 max-age 并且最终总是发送 nocache
导致 Varnish 不缓存任何内容。在这些情况下,您应该忽略 beresp.http.cache-control 中的内容并设置您自己的 TTL。
中找到一些相关阅读以进一步加深此主题
您可以从这里获得有关 vcl 对象的详细概览
https://varnish-cache.org/docs/6.6/users-guide/vcl-variables.html
请告诉我,这些概念有什么区别?我没有在 Varnish 的文档中找到任何答案。他们只是操作这些概念,仅此而已。
什么更适合用于缓存:beresp.ttl 或 max-age in Cache-control header?
如果你能通过一些小例子做到这一点 - 请去做 :)
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。所以最后没有区别。使用它的困难在于一些网络应用程序没有正确处理 max-age 并且最终总是发送 nocache
导致 Varnish 不缓存任何内容。在这些情况下,您应该忽略 beresp.http.cache-control 中的内容并设置您自己的 TTL。
您可以从这里获得有关 vcl 对象的详细概览
https://varnish-cache.org/docs/6.6/users-guide/vcl-variables.html