ワニスはすべての要求をバックエンドに送信します。私。それは他の要求を待ち行列に入れず、1つのバックエンド要求を発行し、その応答をすべてに使用します。
しかし、Varnishにはgrace optionがあります。これにより、古いタイプの期限切れのコンテンツをキャッシュに保存しておくことができます。バックエンドが(backend pollingを参照)健康であるとMISS
のリクエスト結果は、最初の要求がバックエンドに送信された場合今
sub vcl_recv {
if (req.backend.healthy) {
set req.grace = 5m;
} else {
set req.grace = 24h;
}
}
sub vcl_fetch {
set beresp.grace = 24h;
}
:
は、たとえば、次のVCLを検討してください。同じコンテンツに対して別の要求が発生したが、キャッシュに年齢が< TTL + req.grace(この場合は5分)のアイテムがある場合、その要求には代わりに「古い」コンテンツが表示されます。これは、
MISS
という結果になった最初のリクエストがバックエンドからの応答を取得するか、キャッシュが再び新鮮であるか、アイテムの経過時間がTTL + req.graceより大きくなるかぎり、発生します。
バックエンドがダウンしていた場合(req.backend.healthy == FALSE)、古くなったコンテンツは、年齢が< TTL + 24時間である限り提供されます。
Varnish bookのSaving a requestのセクションをチェックして、より詳細な例と練習をすることもできます。
固定:アンエスケープ<文字。
固定より:私はKetolaの(受け入れ)答えが間違っていると信じて別のエスケープ文字< ...
ありがとうgracetime-settingの詳細については、 – Pluto1010
を参照してください。回答にエスケープされていない<文字があることがわかりました。今修正されました。以前はあまり意味がありませんでした。 =) – Ketola
でも、ブラックアウトやクラッシュ後にキャッシュが空の場合に何が起こるのかという疑問があります。私たちのサイトは頻繁に訪問され、毎秒多くのリクエストが発生します。ニスが空のキャッシュを持っていれば私たちのWebサーバーを殺す可能性があると私は思っています。それはワニスが平等な要求を待って一度しか実行しないという私の希望がある理由です。それ以降は他の人がキャッシュから回答を得るでしょう。サーバーはホームページのような要求を1回だけ行います。 1000回並列ではありません。この問題に関するアイデアは何ですか? – Pluto1010