caching - 普通 Varnish : difference between beresp & resp, bereq & req; req.ttl & beresp.ttl

标签 caching varnish

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

什么更适合用于缓存: Cache-control header 中的 beresp.ttl 或 max-age ?

如果你可以用小例子来做 - 请做:)

最佳答案

要求:请求值一到达 Varnish。

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

beresp: 后端响应。 beresp 中的任何更改都会影响作为缓存对象的 resp 和 obj。 提示:如果要获取对象的任何其他信息,请将其设置为 beresp。

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

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

至于什么最适合缓存,Varnish 已经获得了 max-age 并将其设置为 beresp.ttl。所以最终没有区别。使用它的困难在于一些网络应用程序没有正确对待 max-age 并最终总是发送 nocache导致 Varnish 不缓存任何内容。在这些情况下,您应该忽略 beresp.http.cache-control 中的内容并设置您自己的 TTL。

可以在 Varnish Book subroutines section 中找到一些相关阅读以进一步深入了解该主题。 .

关于caching - 普通 Varnish : difference between beresp & resp, bereq & req; req.ttl & beresp.ttl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628070/

相关文章:

apache - Magento + Varnish/ReverseProxy + Apache + DirectAdmin 导致 NET::ERR_CERT_AUTHORITY_INVALID 或 ERR_TOO_MANY_REDIRECTS

varnish - 如何在varnishncsa中记录所选的Director>后端

apache - Varnish HTTP 503 - 后端生病 - apache 静态文件未缓存

java - EclipseLink 缓存大小默认...是每个实体还是总计?

mysql - 从数据库加载数据到内存池 [gwan]

android - WebView 和 GridView 变成 ScrollView,View 太大无法放入绘图缓存

swift - 删除数据和缓存 wkwebview swift 4

sockets - Nginx出现 Varnish 错误: failed (24: Too many open files)

google-analytics - cloudControl 中的 Varnish 是否忽略了新的 Google Universal Analytics cookie ("_ga")?

php - 使用javascript两次创建缓存图像