Cookieが存在する場合でも、Varnishを使用して特定のページをキャッシュしたいと思います。私が世話をする必要がある3つの可能性があります:
予想される動作は次のとおりです。
Varnishに関するいくつかのドキュメントを読みましたが、これがデフォルトの動作であるかどうか、またはそれを実現するためにVCLで実行する必要のあるセットアップがあるかどうかがわかりません。
デフォルトでは、VarnishはCookieヘッダーを使用してリクエストをキャッシュしません。
http://varnish-cache.org/svn/trunk/varnish-cache/bin/varnishd/default.vcl
sub vcl_recv {
(...)
if (req.http.Authorization || req.http.Cookie) {
/* Not cacheable by default */
return (pass);
}
return (lookup);
必要な動作を構成にコーディングする必要があります。 Cookieは、「ページ」(実際にはオブジェクト)ではなく、クライアント要求の一部であることに注意してください。 「ページ」(オブジェクト)には「Set-Cookie」ヘッダーが付属しています。これがキャッシュされます。
また、「Vary:Cookie」は「キャッシュしない」という意味ではありません。これは、受信したCookieの値ごとに1つのオブジェクトをキャッシュすることを意味します。
アプリケーションがCookieに基づいてコンテンツを生成しない場合は、無視しても安全です。
- if (req.http.Authorization || req.http.Cookie) {
+ if (req.http.Authorization) {
いくつかのテストを行うと、コツをつかむことができます。お役に立てれば。
私があなたを正しく理解していれば、キーの一部として特定のCookieは必要ありませんが、そのままにしておく必要がありますか?
Vcl_hashのハッシュをreq.url + req.http.Host(および場合によっては他のホスト)に設定する必要がありますが、特定のCookieは設定しないでください。
私の投稿の1つが正しい方向に役立つと思います: Varnish VCLのGETパラメーターを無視します