4

我在让最简单的 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;

这是我正在测试的 URL:

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

我的 vcl 规则:

1) 默认.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) 测试.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>  

esi 的 php 包括

3) esi_1.php

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

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

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

谢谢你。

4

4 回答 4

5

问题是 Varnish 和 mod_deflate 目前不能很好地协同工作。

删除 deflate.conf 和 deflate.load 解决了这个问题。

干杯。

于 2011-04-01T06:10:15.570 回答
1

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

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

有了它,您可能会避免更改 apache/php 压缩处理设置上的任何内容。

于 2011-05-28T20:23:18.237 回答
0

鉴于最新的错误,这篇博文可能是相关的

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

Varnish 也可以扼杀格式不正确的内容,尽管这似乎不太可能在这里......

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

于 2011-04-01T06:09:58.443 回答
0

对于清漆 3.x

在 vcl_fetch 中,我必须添加:

set beresp.do_esi = true;
于 2014-02-24T11:07:51.880 回答