【问题标题】:Varnish ESI must take difference src path?Varnish ESI 必须走不同的 src 路径?
【发布时间】:2013-07-16 08:51:10
【问题描述】:

一页有 5 个 esi:include,每个 src 是一个相同的路径,具有不同的参数,例如 'm.htm?p=1' & 'm.htm?p=2',但我使用了 varnishlog,只看到 1 个 esi请求发生了,所以我不是在多个 esi:include 标记中使用一个相同的路径吗?

【问题讨论】:

    标签: varnish esi


    【解决方案1】:

    默认情况下,Varnish 支持每个资源 n esi:include 指令,以及每个客户端请求最多 5 级 ESI 递归,但这是可配置的。以下是我将采取的调试步骤列表:

    1. 检查以确保从 varnish 发送给您的客户端的响应中没有 <esi:include /> 标记。然后确保您的后端通过直接点击它来生成与您期望一样多的<esi:include /> 标签。只有当它们存在并且清漆没有解析它们时,清漆才是罪魁祸首。确保没有拼写错误等,例如<es:include .../>
    2. 从 esi 包含标签直接向后端服务器请求 src url。服务器出错了吗?默认行为是忽略 ESI 请求上的错误,我不知道这种情况下 varnishlog 是否会报告它们。
    3. 检查为 esi 片段返回的响应标头。如果它们也是可缓存的,varnish 将不会再次从后端请求它们,直到它们过期并且可能不会将它们记录在 varnishlog 中(查看文档)。
    4. 确保具有不同查询字符串的请求散列到不同的缓存键。如果您的 VCL 试图通过忽略查询字符串来提高命中率,那么您的 ESI 方案将不起作用,因为每个标签在逻辑上都包含相同的缓存资源。

    不知道您是否只关心 varnishlog 输出,或者页面本身是否确实存在 esi 故障的症状,这就是我所能召集的。

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2021-02-12
      • 1970-01-01
      • 2021-05-27
      • 2021-08-18
      • 2020-11-28
      • 2014-09-14
      • 2011-08-23
      • 1970-01-01
      相关资源
      最近更新 更多