Varnish ESI必须采用不同的src路径?

时间:2013-07-12 10:43:50

标签: varnish esi

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

1 个答案:

答案 0 :(得分:0)

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

  1. 检查以确保从varnish传送到客户端的响应中没有<esi:include />个标记。然后通过直接点击它来确保您的后端生成尽可能多的<esi:include />个标记。只有当它们存在并且清漆不解析它们时才应该归咎于清漆。确保没有拼写错误,例如<es:include .../>
  2. 从esi include标签直接向您的后端服务器请求src网址。服务器出错吗?默认行为是忽略ESI请求上的错误,我不知道varnishlog是否会在这种情况下报告它们。
  3. 检查为esi片段返回的响应头。如果它们也是可缓存的,那么varnish将不会再次从后端请求它们,直到它们过期,并且可能不会将它们记录在varnishlog中(请查看文档)。
  4. 确保具有不同查询字符串的请求散列到不同的缓存键。如果您的VCL尝试通过忽略查询字符串来提高命中率,那么您的ESI方案将无法工作,因为每个标记在逻辑上都包含相同的缓存资源。
  5. 不知道你是否只关心varnishlog输出,或者是否在页面本身中确实存在esi失败的症状,这是我能够集中精力的。