プロキシ キャッシュしたい URL は次のとおりです。
file.php?parameter=one¶mater2=two&r=EPOCHTIMESTAMP
クエリ文字列パラメータ「parameter」はリクエストごとに異なります。「paramater2」も同様です。
クエリ文字列パラメータ r は、クライアントが (クライアント側で) キャッシュされたコンテンツを提供しないようにするために使用するタイムスタンプです。別名「キャッシュ バスター」。はい、適切なキャッシュしない h ヘッダーもすべて使用します。
ここで、これらのリクエストの一部を nginx 経由でプロキシ キャッシュしたいと考えています。エントリのキャッシュ キーを設定するときに、r クエリ文字列パラメータを無視し、他のすべてを使用するように nginx に指示することは可能ですか? パラメータ r を無視できない場合、各キャッシュ キーが一意になるため、nginx プロキシ キャッシュは役に立たなくなります。
ありがとう。
答え1
この質問に対する解決策を見つけました。
これを行う正しい方法は、nginx$arg_...
変数を使用してキャッシュ キーを作成することです。$arg_...
にはクエリ文字列パラメータが含まれます。したがって、上記の例では、キャッシュ キー内で$arg_parameter
と を使用します。$arg_parameter2
結果は次nginx.conf
のようになります。
http {
...
server {
location / {
...
proxy_cache_key $scheme$proxy_host$uri$is_args$arg_parameter$arg_parameter2;
}
}
...
}
パラメータなどのハイフン(ダッシュ)を含むクエリ文字列パラメータは、data-*
構文では機能しないことに注意してください$arg_paramName
。Luaを使用した回避策は、この郵便受け。