私は Varnish の背後にある Plone ウェブサイトを持っています。1つのことを除いて、すべて正常に機能しています。
これは動的なサイトであるため、新しいコンテンツが随時追加されます。シナリオは次のとおりです。
アイテムのリストを表示するページがあります。このページはキャッシュされています。そのため、何らかのフォームを介して別のアイテムを追加し、同じページに戻りましたが、新しいアイテムは表示されません。これは、表示されたページがキャッシュからのものであり、まだ TTL 内にあるためです。
新しいアイテムの送信時にそのページがキャッシュから消去され、新しいアイテムを含むバックエンド サーバーからの新しいページが表示されるようにするにはどうすればよいですか?
私の単純な VCL は次のとおりです。
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.request != "GET" && req.request != "HEAD") {
# We only deal with GET and HEAD by default
return (pass);
}
# remove unnecessary cookies
if (req.http.cookie ~ "wc.cookiecredentials|Path|Domain") {
# found wc.cookiecredentials in request, passing to backend server
return (lookup);
} else {
unset req.http.cookie;
}
}
sub vcl_fetch {
#unset beresp.http.Set-Cookie;
set beresp.ttl = 12h;
return(deliver);
}
# Routine used to determine the cache key if storing/retrieving a cached page.
sub vcl_hash {
# Do NOT use this unless you want to store per-user caches.
if (req.http.Cookie) {
set req.hash += req.http.Cookie;
}
}
sub vcl_deliver {
# send some handy statistics back, useful for checking cache
if (obj.hits > 0) {
set resp.http.X-Cache-Action = "HIT";
set resp.http.X-Cache-Hits = obj.hits;
} else {
set resp.http.X-Cache-Action = "MISS";
}
}
または、簡単に言えば、POST 要求を受信するたびにドメインのキャッシュ全体をパージまたはクリアするにはどうすればよいですか?