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フラグメントを格納しません。**
フラグメントの返信要求はどのヘッダにありますか? – symcbean