2013-07-12 17 views
1

一个包含5个esi的页面:include,每个src都有一个相同的路径,其中不同的参数如'm.htm?p = 1'&'m.htm?p = 2',但我使用了varnishlog并只能看到1个esi请求所以不要在一个以上的esi中使用同一条路径:include标签?清漆ESI必须采取不同的src路径?

回答

0

Varnish默认支持n esi:每个资源包含指令,每个客户端请求最多有5个ESI递归级别,但这是可配置的。下面是步骤,我想借此调试列表:

  1. 检查,以确保有从清漆发送到您的客户端的响应没有<esi:include />标签。然后确保您的后端正在按照您预期的方式直接触发<esi:include />标签。光油只有存在时才会受到责备,而光油不能解析它们。确保没有错别字等,如<es:include .../>
  2. 请求esi包含标签的src URL直接到您的后端服务器。服务器出错了吗?默认行为是忽略ESI请求上的错误,并且我不知道varnishlog是否会在这种情况下报告它们。
  3. 检查为esi片段返回的响应头。如果它们也是可缓存的,varnish将不会再从后端请求它们,直到它们过期并且可能不会将它们记录在varnishlog中(请查看文档)。
  4. 确保具有不同查询字符串的请求散列到不同的缓存键。如果您的VCL通过忽略查询字符串来尝试提高命中率,那么您的ESI方案将不起作用,因为每个标签在逻辑上都包含相同的缓存资源。

不知道你是否只关心varnishlog的输出,或者实际上是否有页面本身出现esi失败的症状,这些都是我可以想到的。

相关问题