2011-08-15 7 views
2

repoze.bfgプロジェクトを使用してESIとVarnish 3.0を使用して問題が発生しました。私はESIタグを介して、ログインユーザーの通知を表示するESIの断片があります。ただし、ワニスはインクルードされたESIフラグメントをキャッシュするため、手動で、またはセッションの結果としてフラグメントに加えられた変更は、インクルード(およびキャッシュ)されたWebページに反映されません。どのようにして、ESIフラグメントのキャッシュを停止するようにワニスを作成しますか

使用されるESIタグ:

VCL構成:

sub vcl_recv { 
    if (req.url ~ "[A-Za-z0-9_-]*.esi$") { 
    return (pass); 
    } 

    if (req.http.cookie) { 
    set req.http.Cookie = regsuball(req.http.Cookie, "__utm.=[^;]+(;)?", "");  
    if (req.http.cookie ~ "^ *$") { 
     remove req.http.cookie; 
    } 
} 

    remove req.http.cookie; 
    remove req.http.etag; 
} 

sub vcl_fetch { 
    remove beresp.http.Set-Cookie; 
    remove beresp.http.ETag; 

    #do esi processing 
    set beresp.do_esi = true; 
    if (bereq.url ~ "[A-Za-z0-9_-]*.esi$") { 
     set beresp.ttl = 0s; 
    } else { 
    set beresp.ttl = 24h; 
    }  
    } 

私の仮定は以下のとおりです。

1)ワニスは、「パス/に/ fragment.esiに要求を行います特に、beresp.ttlがすべての.esiフラグメントに対して0に設定されているので、キャッシュストアからフェッチするたびにキャッシュを再アセンブルするWebページ 2)Varn ishは、キャッシュ・ストアにWebページとともにESIフラグメントを格納しません。**

+0

フラグメントの返信要求はどのヘッダにありますか? – symcbean

答えて

0

* .esi URLのキャッシュを完全にスキップします。 beresp.ttl = 0sの代わりに設定します。

関連する問題