簡體   English   中英

Varnish Cache不會做ESI包括

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM