2011-04-01 204 views
4

我有問題,即使最簡單的Varnish Cache ESI測試工作。
嘗試和嘗試後,我想我在這裏問。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

我使用的版本清漆-2.1.5 – Jacob 2011-04-01 04:30:06

+0

你說的是什麼意思怎麼了?包含沒有得到處理嗎?標籤是否顯示在您在瀏覽器中獲得的HTML中?它會被替換爲什麼?是否有錯誤日誌來檢查?運行PHP的後端服務器是否在其訪問日誌中獲得正確的條目? – Charles 2011-04-01 05:41:01

+0

嗨,是的標籤出現在瀏覽器收到的HTML。它並沒有被取代。在PHP中沒有記錄錯誤。 PHP訪問日誌只獲得對test.php的命中,而對esi_1.php沒有任何影響。 – Jacob 2011-04-01 05:55:46

回答

0

鑑於最新的錯誤,this blog post may be relevant

似乎某些版本的Varnish不能很好地處理gzip內容。你有PHP設置來執行gzip壓縮嗎?您是否擁有託管PHP集的web服務器軟件來執行gzip壓縮?

光油也能嗆過不良形成的內容,但這些似乎並不很可能在這裏...

不幸的是我現在的想法。

5

現在的問題是varnish和mod_deflate不能很好地協同工作。

刪除deflate.conf和deflate.load修復了這個問題。

乾杯。

+0

從Apache Web服務器中刪除這些不是PHP的。 – Jacob 2011-04-01 06:11:18

+0

'a2dismod deflate'爲我工作 – Matt 2013-01-16 07:04:09

0

用於清漆3。X

在vcl_fetch

,我不得不補充:「它不工作」

set beresp.do_esi = true;