私は Varnish Cache を初めて使用するので、質問があります。助けていただければ幸いです。
私は非常にシンプルで基本的な設定をしていますが、何らかの理由で理解できるように機能していません。
これは、Cookie を使用している PHP ページを Varnish がキャッシュしないことに関連しています。
これが私のセットアップです:
1) 私の default.vcl には単純なバックエンドがあります
backend default {
.host = "127.0.0.1";
.port = "80";
}
2) 次の 2 行のみを含む単純な PHP ファイルがあります。
session_start();
echo time();
3) このページを呼び出すと、必要な vcl ルールを追加していないため、正しくキャッシュされません。
4)
したがって、ドキュメントの私の理解に従って、これら2つのルールを追加します
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 を使用しているため、ヘッダーが削除されていることがわかります。
PHP がキャッシュするのは、これをサブ vcl_fetch に追加した場合のみです。
set beresp.ttl = 24h;
私の質問は、これは正しいですか?
バックエンド応答の ttl を変更する必要があるとは思いませんでした。Cookie の設定を解除するだけで、セッション付きの PHP が強制的にキャッシュされると思いました。
私の完全なデフォルトの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
私が呼び出している URL は次のとおりです。
http://vbox.local:8080/varnish-tests/index.php
私のindex.phpファイルには次のものしかありません:
<?php
session_start();
echo time();
これが正しいように見えるか、それとも間違っているかをコミュニティに尋ねたいと思います。基本的に、最終的にページキャッシュをニスに入れるために beresp.ttl = 24h を追加しなければならなかった理由がわかりません。
これはいらないなと思いました。
どんなアドバイスでも大歓迎です。
ありがとうございました!
敬具。