1

私は Varnish を初めて使用し、非常に多くのリクエストがmiss、またはのいずれかである理由を理解するのに苦労していますhit_for_pass

unset req.http.Cookie;私は内部に追加しvcl_recvました (私が正しい場合) 事実上すべての Cookie を無視し、Cookie に関係なくキャッシュしますか? これは正しいですか?

しかし、これにもかかわらず、私はまだ取得していませんhits。したがって、この Cookie のアプローチは間違っているか、これが機能しないまったく別の理由があります。

hit_for_passこれに関するアイデア、またはなぜ私がmiss頻繁に取得しているのかを正確に確認する方法はありますか.

ありがとうジェイク

編集

もう少しグーグルして、これを見つけました

sub vcl_fetch {
    unset beresp.http.set-cookie; 
}

これにより、応答オブジェクトからCookieが削除されると思いますが、これが機能する理由と、機能させるために何をしたかを誰かが説明できますか?

EDIT2

もう一度見てみると、varnishstatこれが期待どおりに機能しておらず、まだ多くのミスが発生していることがわかります。

4

2 に答える 2

2

Chances are, if you're getting a lot of hit_for_pass decisions, you've also got very little in the cache itself, hence the misses.

hit_for_pass is only thrown from the vcl_fetch method, I believe, so it is worth looking at what your server is returning. Things to consider include:

  • remove beresp.http.Cache-Control; and remove beresp.http.Pragma; to stop your backend applications from blocking caching.

  • remove beresp.http.Expires; to avoid now/past expiry dates (you may wish to change this to a far-future expires depending on what you're serving).

  • If your app is not serving cookies, then remove beresp.http.Set-Cookie; will have a big impact on your hit_for_pass rates.

  • Make sure you are setting an appropriate beresp.ttl value.

I'd also recommend that you read this article about the 'Accept-Encoding' header (the code in the example goes in the vcl_recv method).

于 2012-07-31T13:04:15.257 に答える
1

この問題を抱えている可能性のある他の人にとって、これは役に立ちました。

https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader

ヘッダーを設定して、キャッシュされているものとキャッシュされていないもの、およびその理由を示します。

于 2012-08-01T08:54:24.463 に答える