Varnish Cache不会做ESI包括

时间:2011-04-01 04:27:13

标签: php include varnish edge-side-includes

即使是最简单的Varnish Cache,我也遇到了问题 ESI测试工作。
经过尝试和尝试,我想我在这里问。

基本上它不会包含ESI文件。它刚刚回归 没有这样做的HTML包括。

这是我的清漆启动命令:

varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080;

以下是我正在测试的网址:

http://vbox.local:8080/varnish-tests/test.php

我的vcl规则:

1)default.vcl

backend default {  
.host = "127.0.0.1";  
.port = "80";  
}  

sub vcl_fetch {  

  if (req.url ~ "test.php") {  
      esi;  /* Do ESI processing */  
      set beresp.ttl = 24h;  
  } elseif (req.url ~ "esi_1.php") {  
      set beresp.ttl = 1m;  
  }  
return(deliver);  
}  

我的示例测试esi代码

2)test.php

<html>  
<head>  

<?php echo "Time 1: ".time(); ?>  

<br />  

The time 2 is: <esi:include src="/varnish-tests/esi_1.php"/> at this very moment.  

</body>  
</html>  

php到esi包括

3)esi_1.php

<?php
echo "Time 2: ".time();  
?>

我尝试了上述vcl规则的许多变体 一切都行不通。只是看不出我哪里出错了?

任何建议/帮助非常感谢。

谢谢。

4 个答案:

答案 0 :(得分:5)

问题是Varnish和mod_deflate在这个时候不能很好地协同工作。

删除deflate.conf和deflate.load修复了问题。

干杯。

答案 1 :(得分:1)

尝试使用Varnish 3.0 beta1进行测试。它的一个主要新功能是完全压缩支持(这意味着它现在也适用于ESI):

https://www.varnish-software.com/blog/varnish-cache-30-beta-1-out

有了这个,你可能会避免改变你的apache / php压缩处理设置。

答案 2 :(得分:0)

鉴于最新错误this blog post may be relevant

似乎某些版本的Varnish不能很好地处理gzip压缩内容。你有PHP设置来执行gzip压缩吗?你有托管PHP的Web服务器软件来执行gzip压缩吗?

Varnish也可以扼杀形成不佳的内容,虽然这似乎不太可能......

不幸的是,我现在已经没有想法了。

答案 3 :(得分:0)

对于Varnish 3.x

在vcl_fetch中,我不得不添加:

set beresp.do_esi = true;