web-dev-qa-db-ja.com

ニスのパスの意味は?

Varnishバージョン3には、さまざまな操作用のオブジェクトがいくつかあります。

たとえば、パスはバックエンドからデータを取得する必要がある場合に使用されます。また、キャッシュ内の要求コンテンツを見つけるとヒットを使用します。

しかし、パスヒットの使用法を理解することはできません。ワニスはそれを使用するとき?私はネット上で私を明確にする有用な資料を見つけていません。

47
Muneeb Nasir

Hit_for_passオブジェクトは、バックエンドサーバーに対してフェッチプロシージャを最適化するために作成されます。

通常のキャッシュミスの場合、Varnishは同じキャッシュオブジェクトを要求するすべてのクライアントをキューに入れ、単一の要求をバックエンドに送信します。これは通常、最も高速で、同時にn個の要求でバッ​​クエンドを処理するのではなく、単一の要求でバッ​​クエンドを動作させます。

一部のバックエンドはオブジェクトの準備に多くの時間を費やすことを忘れないでください。 10秒は珍しくありません。これがフロントページHTMLであり、それに対して3000 req/sがある場合、バックエンド要求を1つだけ送信することは非常に理にかなっています。

この問題は、Varnishがオブジェクトをフェッチした後、キャッシュできないことがわかったときに発生します。この理由は、バックエンドが「Cache-Control:max-age = 0」、または(より頻繁に)Set-Cookieヘッダーを送信することです。この場合、3,000から30,000の間のクライアント(3k req/s * 10秒)がキューでアイドル状態になり、これらの各クライアントに対して、それらを処理するために同じ低速の一度に1つのバックエンド要求が完了する必要があります。これはサイトの応答時間を台無しにします。

そのため、Varnishは、hit_for_passオブジェクトを作成してこの要求をキャッシュできないという決定を保存します。

同じURLに対する次のリクエストで、キャッシュルックアップはhit_for_passオブジェクトを返します。これは、複数のフェッチを同時に実行できることを示します。あなたのバックエンドはそれについてあまり満足していないかもしれませんが、少なくともワニスは理由もなくクライアントをキューに入れていません。

161
lkarsten