http クライアント、いくつかのプロキシ、およびバックエンドとして機能する Web サーバーがあるとします。プロキシは、バックエンドの応答をキャッシュするように構成されています。
リクエストが到着すると、プロキシがそれをバックエンドに転送し、後者の応答が返されると、プロキシは応答をキャッシュしてクライアントに送信します。
バックエンドが、プロキシのリクエストへのレスポンスにいくつかのキャッシュ関連のヘッダーを設定したと想像してください。例えば:
Cache-Control: no-cache (or)
Cache-Control: max-age=100000 (or)
Expires: 'Next Friday'
問題は、クライアントからの次のリクエストが、そのヘッダーに従ってプロキシによって処理されるかどうかです。
質問のもう 1 つの味:独自の静的リソース ライフタイム設定を除いて、リソースが古いことをプロキシが理解する方法はありますか?
3 番目のバリエーション:プロキシのバージョンのリソースがプロキシによって古いと見なされない場合、クライアントはプロキシに強制的に新しいリソース バージョンをロードさせることができますか?
私の質問は少し一般化されすぎているように見えるかもしれませんが、十分に具体的ではありません。ブラウザー + nginx プロキシ + nginx Web サーバーのセットアップを使用して、この問題に対処しようとします。一部のリソースがプロキシによってキャッシュされていて、nginx の proxy_cache_valid タイムアウトがまだオンになっている場合、セットアップが正しく機能する場合、プロキシが古い応答を提供するのを防ぐことはできません。私が何をしても、リクエストはバックエンドにヒットしません。
nginx は proxy_cache_valid 設定のみに基づいてキャッシュが古いかどうかを判断しているようで、バックエンドの応答のヘッダーはまったく問題ではありません。私の推測が正しいかどうか、また、nginx などのリバース プロキシ、squid などのオフィス ネットワークの内部プロキシ、インターネット パブリック プロキシとして機能する他の http プロキシ設定では正しくない可能性があるかどうか疑問に思っています。