Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 清漆缓存不包括ESI_Php_Include_Varnish_Edge Side Includes - Fatal编程技术网

Php 清漆缓存不包括ESI

Php 清漆缓存不包括ESI,php,include,varnish,edge-side-includes,Php,Include,Varnish,Edge Side Includes,我在获取最简单的清漆缓存时遇到问题 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

我在获取最简单的清漆缓存时遇到问题 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>  


时间2是:此时此刻。
esi的php包括

3) esi_1.php

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

我尝试了上述vcl规则的多种变体。
一切都不管用。只是看不出我错在哪里

非常感谢任何建议/帮助

多谢各位

给定最新的错误

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

清漆也可能会被成形不良的内容物堵塞,尽管在这里似乎不太可能


不幸的是,我现在没有主意了。

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

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


干杯。

尝试使用清漆3.0 beta1进行测试。其主要新功能之一是完全压缩支持(这意味着它现在也可以与ESI一起使用):

这样,您就可以避免更改apache/php压缩处理设置中的任何内容。

对于Varnish 3.x

在vcl_fetch中,我必须添加:

set beresp.do_esi = true;

我使用的是varnish-2.1.5版,你说的“它不工作”是什么意思?会发生什么?包含的内容是否未得到处理?标签是否显示在浏览器中的HTML中?它会被什么都没有取代吗?是否有要检查的错误日志?运行PHP的后端服务器是否在其访问日志中获得了正确的条目?您好,是的,标记显示在浏览器接收的HTML上。它根本没有被替换。PHP中没有记录错误。PHP访问日志只得到test.PHP的命中率,而没有得到esi_1.PHP的命中率。11 VCL_错误c esi只能从VCL_调用。抱歉,这是一条错误消息。这是正确的一个:ESI_xmlerror c没有ESI处理,第一个字符没有“从Apache web服务器中删除这些,而不是从PHP中删除”。