即使是最简单的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规则的许多变体 一切都行不通。只是看不出我哪里出错了?
任何建议/帮助非常感谢。
谢谢。
答案 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;