プロキシキャッシュサーバーの制限はありますか?

プロキシキャッシュサーバーの制限はありますか?

プロキシ キャッシュ サーバーに関して、あまり一般的ではない質問があります。

架空の状況を設定するために、私は自宅内にプロキシキャッシュサーバーを設置して、ルーターを通過するトラフィックの量を減らすことを考えています(ISPは使用できるデータの総量に上限を設けています)。サーバーはルーターの内部に設置されるため、ルーターは一部のデータが保存されていることに気付きません。

この場合、プロキシ キャッシュ サーバーはどの程度効果的でしょうか? (また、ルーター全体のネットワーク トラフィックを削減するために、他にどのような手段を実装できますか)

プロキシ サーバーは Web サイトの個々の画像をキャッシュできますか? たとえば、フォーラムは頻繁にコンテンツを更新しますが、Web サイトに表示される画像は変更されません。Web サイトに関する情報の一部は保存できますか? それとも、動的容量のため、Web ページ全体を再度要求する必要がありますか?

私はプロキシ サーバーの機能についてまだあまり詳しくありませんが、それについて十分な情報を見つけることができれば、最終的にはそれを IT の仕事に取り入れたいと思っています。

答え1

プロキシ サーバーは Web サイトからの個々の画像をキャッシュできますか?

はい。

動的容量のため、Web ページ全体を再度要求する必要がありますか?

動的部分は再取得する必要がありますが、プロキシは、ページの個別に取得された各要素のプロキシ制御ヘッダーを調べることでこれを処理する必要があります。


以下は、ChromeがSuperuserからWebページを取得する様子をWiresharkでキャプチャした短い(編集済みの)例です。

クライアントのリクエスト

GET /questions/419790/confused-by-cpu-model HTTP/1.1
Host: superuser.com
Connection: keep-alive
User-Agent: …Chrome…
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://superuser.com/questions
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: …

サーバー応答

HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Wed, 02 May 2012 19:41:23 GMT
Last-Modified: Wed, 02 May 2012 19:40:23 GMT
Vary: *
Date: Wed, 02 May 2012 19:40:23 GMT
Content-Length: 9831

および に注意してください。Cache-Control: public, max-age=60これExpires: Wed, 02 May 2012 19:41:23 GMTは、サーバーが各コンテンツのキャッシュ方法を制御しようとする方法です。スーパーユーザーの質問ページには、このような個別に取得された要素が数十または数百ある場合があります。

何を読むかW3Cのキャッシュ制御に関する発言

Cache-Control 一般ヘッダー フィールドは、リクエスト/レスポンス チェーンに沿ったすべてのキャッシュ メカニズムが従わなければならないディレクティブを指定するために使用されます。ディレクティブは、キャッシュがリクエストまたはレスポンスに悪影響を与えるのを防ぐための動作を指定します。これらのディレクティブは通常、デフォルトのキャッシュ アルゴリズムをオーバーライドします。キャッシュ ディレクティブは単方向であり、リクエストにディレクティブが存在しても、同じディレクティブがレスポンスに指定されるとは限りません。

後で

公共
通常はキャッシュ不可能であったり、非共有キャッシュ内でのみキャッシュ可能である場合でも、レスポンスが任意のキャッシュによってキャッシュされる可能性があることを示します。(詳細については、セクション 14.8 の承認も参照してください。)

プライベート
応答メッセージの全部または一部が単一のユーザー向けであり、共有キャッシュによってキャッシュされてはならないことを示します。これにより、オリジン サーバーは、応答の指定された部分が 1 人のユーザーのみを対象としており、他のユーザーによる要求に対する有効な応答ではないことを表明できます。プライベート (非共有) キャッシュは、応答をキャッシュできます。注: このプライベートという語の使用は、応答がキャッシュされる場所を制御するだけであり、メッセージ コンテンツのプライバシーを保証するものではありません。

キャッシュなし
no-cache ディレクティブでフィールド名が指定されていない場合、キャッシュは、オリジン サーバーでの再検証が成功しない限り、後続のリクエストを満たすためにレスポンスを使用してはなりません (MUST NOT)。これにより、オリジン サーバーは、クライアント リクエストに対して古いレスポンスを返すように設定されているキャッシュによるキャッシュも防止できます。

などなど、非常に広範囲にわたる分野です。

関連情報