我是新來的清漆緩存,並有一個問題,我希望我可以得到一些幫助。清漆緩存沒有緩存與會話PHP除非後端TTL改變
我有一個非常簡單和基本的設置,但它不工作,因爲我明白 它應該由於某種原因。
這與Varnish沒有緩存正在使用cookie的PHP頁面有關。
這裏是我的設置:
1)對於我default.vcl我有一個簡單的後端
backend default {
.host = "127.0.0.1";
.port = "80";
}
2)我有隻有這兩條線段一個簡單的PHP文件:
session_start();
echo time();
3) 當我打電話給這個頁面時,它正確不會緩存 ,因爲我沒有在所需的vcl規則中添加
4)
所以按我的文檔的理解我在這兩個規則
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
return(deliver);
}
5)添加 PHP的頁面仍然將不緩存。 我可以看到Set-Cookie
標題已被 刪除,因爲我在FireFox中使用FireBug。
這只是如果我添加此子vcl_fetch 的PHP將緩存:
set beresp.ttl = 24h;
我的問題是這是正確的?
我不認爲我需要改變後端響應的ttl 。我認爲只是不想設置 cookie會強制PHP w /會話緩存。
我的完整的默認VCL是:
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
set beresp.ttl = 24h;
return(deliver);
}
我的啓動命令是:
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/index.php
我的index.php文件有隻有:
<?php
session_start();
echo time();
我想問問社區如果這看起來正確 或如果我錯了。本質上,我只是不確定爲什麼我有 添加beresp.ttl = 24h最終有頁面緩存 在清漆。
我以爲我不需要這個。
任何建議非常感謝。
謝謝!
親切的問候。
這符合我的經驗 - 我已經設置了我想要清漆緩存在我的VCL中的任何東西的ttls。如果你不給它一個ttl,你會期望清漆能夠緩存多久? – 2011-03-29 02:06:58
嘿,弗蘭克。您的評論非常有意義。我只是不確定,因爲我沒有注意到有關設置與緩存cookie相關的beresp.ttl的文檔中的任何內容。也許我在文檔中記錄了這一點。我花了30多分鐘的時間撓撓我的腦袋,直到我想出了它。再次感謝。 – Jacob 2011-03-29 02:10:43
緩存處理會話的PHP響應時需要注意的事項:PHP默認* * [發送反緩存標題](http://us2.php.net/manual/en/function.session-cache-limiter。 PHP)。如果Varnish服從這些標題,如果您期待特定的緩存行爲(一旦您解決了當前的問題,這完全不相關),則可能會遇到困難。 – Charles 2011-03-29 02:14:36