0

私はワニスにかなり慣れていないのではないかと思いますが、どこにも解決策が見つからないという問題があります(まだ):ワニスはGETリクエストをキャッシュするように設定されています。非常に多くのパラメータを持つリクエストがいくつかあるため、リクエストの本文でそれらを渡すことにしました。これは、Varnishをバイパスする場合は正常に機能しますが、Varnishを通過する場合(キャッシュ用)、要求は本文なしで渡されるため、Varnishの背後にあるサービスは失敗します。

POSTを使用できることはわかっていますが、データを取得したいと思います。また、パスモードを使用すると、Varnishがリクエストの本文を渡すことができることも知っていますが、私が見る限り、パスモードで行われたリクエストはキャッシュされません。私はすでにURLにハッシュを入れているので、問題が発生したときに実際にキャッシュから正しいデータを取得します(URLが実行される限り、呼び出しはすべて同じように見えます)。

問題は、リクエスト本文をWebサーバーに渡すためにvcl_fetchを「ただ」書き直す方法です。ヒントやヒントは大歓迎です!

前もって感謝します

ジョン

4

2 に答える 2

0

できるとは思いませんが、できたとしても非常に危険です。Varnish はリクエストの本文をキャッシュやハッシュ テーブルに格納しないため、同じ URI を持つ 2 つのリクエストと違う体。

リクエスト本文を読み取るための VCL キーについては聞いたことがありませんが、存在する場合は、それを req.hash に渡してリクエストを区別できます。

とにかく、リクエスト本文は POST または PUT でのみ使用する必要があり、POST/PUT リクエストはキャッシュしないでください。

リクエストボディは、サーバーにデータを送信することになっています。キャッシュはデータの取得に使用されます...

詳細はわかりませんが、あなたのプロセスに設計上の問題があると思います...

于 2011-12-01T18:15:04.300 に答える
0

あなたの質問が正しいかどうかわかりませんが、何らかの方法でリクエスト本文と対話しようとすると、VCL では不可能です。これを行うための VCL 変数/サブルーチンはありません。

VCL で使用可能な変数のリストは、こちら (または man vcl) にあります。

Gauthier に同意します。システムに設計上の問題があるようです。

「お役に立てば幸いです。

于 2011-12-29T13:12:54.257 に答える