web-dev-qa-db-ja.com

キャッシュ制御でのプライベートとパブリック

IISでホストされているasp.netアプリケーションのパブリックキャッシュプライベートとプライベートキャッシュコントロールの違いを示す例を説明してください。

[〜#〜] msdn [〜#〜] を読むと、違いは次のとおりです。

Public:Cache-Control:publicを設定して、応答がクライアントおよび共有(プロキシ)キャッシュによってキャッシュ可能であることを指定します。

Private:デフォルト値。 Cache-Control:privateを設定して、共有(プロキシサーバー)キャッシュではなく、クライアントでのみ応答をキャッシュできるように指定します。

それぞれの選択の長所と短所を完全に理解したかどうかはわかりません。いつ使用するかしないかの例は素晴らしいでしょう。

たとえば、同じアプリケーションをホストする2つのWebサーバーがある場合、どうすればよいですか?プライベートまたはパブリックを選択した場合に注意することはありますか?

118
ppolyzos

唯一の違いは、プライベートでは、プロキシが通過するデータをキャッシュすることを許可しないことです。最終的には、送信するページ/ファイルに含まれるデータに要約されます。

たとえば、ISPには、Webページをキャッシュして必要な帯域幅の量を減らし、コストを削減する、見えないプロキシをユーザーとインターネットの間に持つことができます。 cache-control:privateを使用することで、ページをキャッシュしないように指定しています(ただし、最終ユーザーはキャッシュすることを許可しています)。 cache-control:publicを使用する場合、誰もがページをキャッシュしても構わないと言っているので、プロキシはコピーを保持します。

経験則として、everybodyがアクセスできる場合(たとえば、このページのロゴ)cache-control:publicの方が良いかもしれません。キャッシュする人が多いほど、帯域幅が小さくなるためです。必要になります。接続されたユーザーに関連するものである場合(たとえば、このページのHTMLにはユーザー名が含まれているため、他のユーザーには役に立たないでしょう)cache-control:privateは、プロキシがデータをキャッシュするため、より良いでしょう他のユーザーから要求されることはありません。また、信頼できないサーバーに保存したくないデータを保持している可能性もあります。

そして、もちろん、非公開のものにはすべてプライベートキャッシュが必要です。そうしないと、データにアクセスできる人がアクセスできる場合、データは中間プロキシサーバーに保存される可能性があります。

218
salgiza