ワニスを初めて使用した場合。 。すべてのページが設定PHPSESSIDとLANGUAGEクッキーを使用したワニスキャッシング
:それは、私はいくつかのPHPコードを改善しようとしている
:-(予想以上に、ハード取得、ニスを使用して、いくつかの時間前に開発だ このコードは、ちょうど2枚のクッキーを使用しています。。それは定義されていない場合はPHPSESSIDクッキー、それが1つのページのみに使われている匿名セッションのためしかし、このクッキー
のは、私がPage1の、ページ2、ページ3およびPage4を持っているとしましょう、次のように私の設定は次のようになります。
ページ1、ページ2 Page3はLANGUAGEクッキーを必要とし、そのクッキーでキャッシュされるべきです:1つのキャッシュfo各言語とページ。
Page 4 PHPSESSIDとLANGUAGEのCookieが必要であり、ユーザーごとに固有のものとしてキャッシュしないでください。
私のdefault.vlcが正しく動作していないので、どの方向付けも本当に安上がりでしょう。たぶん私はいくつかの概念を忘れてしまったでしょう。
sub vcl_init {
# When requests come to Varnish I need to remove PHPSESSID so it's not used for the hash in caching. Page4 doesn't need caching as it's specific for each user:
if (req.http.host ~ "Page4") {
return(pass);
}
# remove PHPSESSID so pages1, 2, and 3 get cached just once for everyuser but in all languages.
if ((req.url !~ "page4")) {
set req.http.Cookie = regsuball(req.http.Cookie, "PHPSESSID=[^;]+(;)?", "");
}
return (hash);
}
私はそう、私はvcl_hashに含めるLANGUAGEクッキーとウェブページをキャッシュする必要があります。
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
# hash cookies for requests that have them
if (req.http.Cookie) {
hash_data(req.http.Cookie);
}
}
は、どのように私はちょうどPHPSESSIONIDを削除することができますか?
sub vcl_backend_response {
# Called after the response headers has been successfully retrieved from the backend.
if (!(bereq.url ~ "Page4")) {
unset beresp.http.set-cookie;
}
return (deliver);
}