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