私は突き刺すつもりです...それは応答$sent_http_HEADER
の一部であるため、キャッシュキーにはあまり意味がありません。nginxは、実際にアップストリームサーバーに接続してリクエストを実行するまで、レスポンスにアクセスできません。
nginxがアップストリームサーバーに「ねえ...送信したばかりの応答ヘッダーに基づいて、キャッシュから残りのリクエストを処理します」と伝える方法がないことに注意してください。
したがって...応答がすでにキャッシュにあることをリクエストから判断できない場合は、キャッシュをまったく使用できません。
これを解決する1つの方法は、Cookieを使用することです。ユーザーの言語設定をCookieに追加できます。これは、後続のリクエストでクライアントから返されます。その値はリクエストに存在するため、キャッシュキーで使用できます($cookie_lang
レスポンスにが含まれている場合などSet-Cookie: lang=tr
)。
これに関連する問題があります。サーバーでこの種のキャッシュがあったとしても、応答の言語ヘッダーを使用して機能します。それでもクライアントに更新は表示されません。ブラウザのキャッシュにあるからです。そのキャッシュをオフにすることはできません。また、少数のcache-controlヘッダーを除いて、キャッシュを制御することもできません。あなたが投稿したコンテンツから、それらはすでに賢明な方法で設定されているように見えます(5分が経過し、ヘッダーリストを変更しますcookie
)。つまり、その約束を尊重し、それらのリクエストヘッダーに同意する だけで応答コンテンツを変更するのはあなた次第です。
幸い、言語を表現するためにCookieを追加すると、使用しているキャッシュ制御ヘッダーが尊重されます。