asp.NetクライアントブラウザキャッシュのHttpヘッダ紹介

3135 ワード

ブラウザをキャッシュするには、指定したHttpヘッダをブラウザに送信し、どのくらいキャッシュするかをブラウザに伝えるか、キャッシュしないでください.としてNetのプログラマー、実は私达はずっとこのような方法を使って、OutputCache指令の中でキャッシュのLocationをClientに指定する时、実はブラウザに1つのHttpの头を送って、ブラウザにこのUrlがどのくらいキャッシュして、最后に修正する时间を教えます.
マイクロソフトはOutputCacheModuleでこれらのキャッシュに使用されるHttpヘッダをよくカプセル化していますが、これらのHttpヘッダがより柔軟に使用できることを知っています.
クライアントキャッシュに関連するHttpヘッダには、以下のものがあります.
1.Expires:+有効期限
指定された時間後にブラウザキャッシュが無効になることを示します.ここでの有効期限はHTTP形式の日付時間でなければなりません.その他は現在の時間「前」に解析され、キャッシュはすぐに有効期限が切れ、HTTPの日付時間はローカル時間ではなくグリニッジ時間(GMT)でなければなりません.例:
 
  
Expires: Fri, 30 Oct 2009 14:19:41

Expiresを使用して期限が切れるには、サーバーの時間が正しい必要があります.そうしないと、送信されたhttpヘッダに問題が発生し、windowsサービスの下で時間サーバーを設定して時間を同期することができます.
2. Cache-control:
Cache-controlは中国語に直訳するとキャッシュ制御であり、その役割はキャッシュ制御であり、このhttpヘッダの値はいくつかある.
1)max-age=[秒]―キャッシュの実行は最新の最長時間と考えられる.このパラメータは、期限切れと同様に、絶対期限切れではなく要求時間の相対間隔に基づいており、[秒]は秒単位で、要求時間から期限切れまでの秒数です.
2)s-maxage=[秒]―max-age属性に類似しており、共有(例えば:プロキシサーバー)キャッシュに適用されている
3)public―タグ認証コンテンツはキャッシュされてもよく、一般的にはHTTP認証を経てアクセスできるコンテンツは、出力が自動的にキャッシュできない;
4)no-cache:ローカルキャッシュバージョンの検証なしに、要求ごとにソースサーバに直接送信するように強制します.これは、認証アプリケーションの確認に役立つ(publicと組み合わせて使用できる)、または最新データの使用を厳格に要求するアプリケーションに役立つ(キャッシュの使用のすべてのメリットを犠牲にすることを惜しまない).
5)no-store:キャッシュはいかなる場合においてもコピーを保持しないことを強制する
6)must-revalidate――キャッシュはあなたが与えたすべてのコピーの鮮度に従わなければならないことを教えて、HTTPはキャッシュが特定の状況で期限切れのデータを返すことを許可して、この属性を指定して、あなたはキャッシュして、あなたは厳格にあなたの規則に従うことを望んでいます.
7)proxy-revalidate――must-revalidateと同様、キャッシュエージェントサーバのみに対して機能する
例:
 
  
Cache-Control: max-age=3600, must-revalidate

Cache-controlは、Expiresよりも柔軟なキャッシュ制御を提供し、サーバ時間に依存する必要がないことは明らかです.
Asp.NetのマイクロソフトはCache-control属性の設定をHttpCachePolicyクラスにカプセル化し、Response.Cacheは、Cache-Control Httpヘッダ値を制御するために次の方法を呼び出します.
 
  
Response.CacheControl;
Response.Cache.SetNoStore
Response.Cache.SetMaxAge
Response.Cache.SetProxyMaxAge
Response.Cache.SetRevalidation

3. Last-Modified/If-Modified-Since
この2つのHttpヘッダは、あるアドレスの最近の更新時間を表し、サーバ側がクライアントに応答するペアである.後者はクライアントブラウザがサーバに送信したもので、ウェブサーバクライアントに最終変更時間のなぜ時間のキャッシュがあるのかを教え、サーバ側がIf-modified-Sinceヘッダを受信すると、クライアントキャッシュのurlアドレスのキャッシュが最新であるかを判断し、最新であればサーバ側がクライアントに直接HttpStatus 304を返す.キャッシュを直接使えばいいです.サーバがurlの最終更新時間がIf-MOdified-Sinceの値よりも新しいことを発見した場合、新しいコンテンツが出力されます.
同様にマイクロソフトもサーバ側のパッケージを設定してくれて、このように呼び出すことができます.
 
  
Response.Cache.SetLastModified(DateTime)
Response.Cache.SetLastModifiedFromFileDependencies()

もっと複雑なニーズがあれば、自分で処理する必要があります.
4. ETag/If-None-Match
ETagはLast-Modifiedと似ていますが、urlのバージョンを示す文字列を送信しています.urlが変更された場合、この表示も変更され、ブラウザがIf-None-Martchを送信したときにブラウザの内容が変更されたか、キャッシュを使用することができます.
Iisは自動的に静的ファイルにEtagを加え、ファイルが変更されたときにEtagを再生成します.これにより、1つのサイトのn以上の静的ファイル、例えば、スタイルシート、小さな画像などに対して、クライアントは1回だけダウンロードすれば十分で、負荷を軽減することができます.
Asp.Netでは、次の2つの方法で設定できます.
 
  
Response.Cache.SetETag(string)
Response.Cache.SetETagFromFileDependencies()

マイクロソフトは私たちのために多くのパッケージを作ってくれましたが、これらのHttpヘッダをうまく使うには、詳細な理解が必要です.