php - 调试Varnish的hit_for_pass对象

标签 php caching varnish

我是 Varnish 的新手,我很难理解为什么有这么多请求是 misshit_for_pass

我在 unset req.http.Cookie; 中添加了 vcl_recv 以(如果我是对的)有效地忽略所有 cookie 和缓存,而不管 cookie 是什么?这是正确的吗?

但尽管如此,我仍然没有收到 hits 。所以这种 cookie 方法要么是错误的,要么是完全不同的原因导致它不起作用。

关于这个的任何想法,或者有没有办法确切地了解为什么我经常收到 hit_for_passmiss

谢谢
jack

编辑

更多的谷歌搜索,我发现了这个

sub vcl_fetch {
    unset beresp.http.set-cookie; 
}

所以我想这会从响应对象中删除 cookie,有人可以解释为什么现在可以工作以及我做了什么才能让它工作吗?

编辑2

再次查看 varnishstat 表明这并没有像我预期的那样工作,而且我仍然有很多失误。

最佳答案

如果您有很多hit_for_pass决策,那么很有可能您在缓存本身中的存储量也很少,因此未命中。

我相信hit_for_pass仅从vcl_fetch方法抛出,因此值得一看服务器返回的内容。要考虑的事项包括:

  • remove beresp.http.Cache-Control;remove beresp.http.Pragma;阻止后端应用程序阻止缓存。
  • remove beresp.http.Expires;可以避免现在/过去的到期日期(您可能希望将其更改为远期到期,具体取决于您所提供的服务)。
  • 如果您的应用未提供Cookie,则remove beresp.http.Set-Cookie;将对您的hit_for_pass率产生重大影响。
  • 确保您设置了适当的beresp.ttl值。

  • 我还建议您阅读this article about the 'Accept-Encoding' header(示例中的代码在vcl_recv方法中)。

    关于php - 调试Varnish的hit_for_pass对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740270/

    相关文章:

    java - 在 persistence.xml 中缓存区域配置

    symfony - 如何缓存复杂的计算临时数据

    caching - Varnish和ESI,性能如何?

    drupal-6 - 在 Drupal6 中使用带有 Varnish 的移动工具模块?

    php - 缓存(自动版本)通过组合多个 css 文件创建的 php 文件的有效方法是什么?

    php - Mysql从2个表循环数据

    php - 联系 API,有时会出现错误...?

    php - 存储和排序图像

    http - Varnish Via 和 X-Varnish header : are they needed in production?

    wordpress - 这个 vcl_hash 函数有什么作用?