2

ここのガイドに従っています:https://www.varnish-cache.org/docs/trunk/tutorial/esi.html

現在、私のプロジェクトには 2 つのページがあります。

  1. http://127.0.0.1:3001/(キャッシュ制御: 最大年齢 = 60、非公開):

    <b>Cached:</b> <%= Time.now %> <br/>

    <b>ESI:</b> <esi:include src="/staticview" /> <br/>

  2. http://127.0.0.1:3001/staticview(Cache-Control:max-age=1、非公開):

    <%= Time.now %>

ただし、最初のページをリクエストするたびに、毎秒更新するのではなく、ESI インクルードの結果を 60 秒間キャッシュしているようです。

最初のリクエスト:

Cached: 2012-07-09 01:31:12 +0200
ESI: 2012-07-09 01:31:12 +0200

2 番目の要求 (10 秒後):

Cached: 2012-07-09 01:31:12 +0200
ESI: 2012-07-09 01:31:12 +0200

3 番目のリクエスト (約 1 分後):

Cached: 2012-07-09 01:32:19 +0200
ESI: 2012-07-09 01:32:19 +0200

これは予想される動作ですか?または、ドキュメントを誤解していますか?

私の VCL 設定は次のようになります。

backend default {
    .host = "127.0.0.1";
    .port = "3000";
}

sub vcl_recv {
    # Don't cache POST, PUT, or DELETE requests
    if (req.request == "POST" || req.request == "PUT" || req.request == "DELETE") {
        return(pass);
    }

    return(lookup);
}

sub vcl_fetch {
    # We want ESI
    set beresp.do_esi = true;

    if (beresp.http.Cache-Control ~ "max-age") {
        unset beresp.http.Set-Cookie;
        return(deliver);
    }

    # Do not deliver into cache otherwise.
    return(hit_for_pass);
}

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Varnish-Cache = "HIT (" +obj.hits+ ")";
    } else {
        set resp.http.X-Varnish-Cache = "MISS";
    }
}

Varnish は次のパラメーターで実行されます。

varnishd -F -a 127.0.0.1:3001 -f config/varnish/development.vcl

私のVarnishバージョンはこれです(Mac OS Xで実行され、HomebrewリポジトリのVarnishを使用):

varnishd (varnish-3.0.2 revision 55e70a4)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2011 Varnish Software AS
4

0 に答える 0