[英]Varnish Cache will not do ESI include
即使是最简单的Varnish Cache ESI测试也无法正常工作。
经过尝试和尝试,我想我在这里问。
基本上它只是不包括ESI文件。 它只是返回HTML而不做它的包含。
这是我的varnish start命令:
varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080;
这是我正在测试的URL:
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规则的许多变体。
一切都行不通。 只是看不出我哪里出错了?
任何建议/帮助非常感谢。
谢谢。
问题是Varnish和mod_deflate在这个时候不能很好地协同工作。
删除deflate.conf和deflate.load修复了问题。
干杯。
尝试使用Varnish 3.0 beta1进行测试。 它的一个主要新功能是完全压缩支持(这意味着它现在也适用于ESI):
https://www.varnish-software.com/blog/varnish-cache-30-beta-1-out
有了这个,你可能会避免在你的apache / php压缩处理设置上改变任何东西。
对于Varnish 3.x
在vcl_fetch中,我不得不添加:
set beresp.do_esi = true;
鉴于最新的错误, 此博客文章可能是相关的 。
似乎某些版本的Varnish不能很好地处理gzip压缩内容。 你有PHP设置来执行gzip压缩吗? 你有托管PHP设置的网络服务器软件来执行gzip压缩吗?
Varnish也可以扼杀形成不良的内容,虽然这似乎不太可能......
不幸的是,我现在没有想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.