[HOWTO] Internet Explorer でキャッシュを無効にする

文書翻訳 文書翻訳
文書番号: 234067 - 対象製品
この記事は、以前は次の ID で公開されていました: JP234067
すべて展開する | すべて折りたたむ

目次

概要

この資料では、HTTP ヘッダーを使って、Internet Explorer で Web ページのキャッシュをコントロールする方法について説明します。

Microsoft Internet Information Server (IIS) を使用すると、特定の Active Server Pages (ASP) ページの一番最初に次のスクリプトを使用することで、非常に動的なページを簡単にマークすることができます。
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

詳細

Expiration および Expires ヘッダー

すべての Web サーバーで、全 Web ページの有効期限に関するスキームを使用することを強くお勧めします。Web サーバーは、リクエストを実行するクライアントに返すすべてのリソースで、HTTP Expires 応答ヘッダーを使って有効期限情報を提供する必要があります。ほとんどのブラウザおよび中間に存在するプロキシでは、この有効期限情報を重要視し、この情報を使ってネットワーク上の通信の効率化を図るようになっています。

常に Expires ヘッダーを使用して、クライアントがサーバー上の特定のファイルを更新する必要のある最適な時間を指定する必要があります。ページが定期的に更新される場合、次の更新までの期間が最適な時間指定になります。たとえば、毎朝 5 時に更新されるデイリー ニュースが Web ページに掲載されているとします。このニュース ページが設置されているサーバーは、次の日の朝 5 時の値を持つ Expires ヘッダーを返す必要があります。この動作が行われた場合、そのページが実際に変更されるまで、ブラウザは Web サーバーにアクセスする必要がありません。

変更が予定されていないページには、約 1 年の期限の値を指定する必要があります。

多くの場合、Web サーバーには、すぐに変更する必要のある情報を含むページが 1 つ、または複数含まれています。こうしたページでは、サーバーにより、Expires ヘッダーの値を "-1" に設定する必要があります。ユーザーによるリクエストが発生した場合、Internet Explorer は通常、If-Modified-Since の条件リクエストを使って、そのページを更新するために Web サーバーにアクセスします。しかし、そのページはディスク キャッシュ ("インターネット一時ファイル") に保持され、リモート Web サーバーにアクセスすることなく、適切な状況で使用されます。たとえば、[戻る]、[進む] ボタンを使って履歴にアクセスする場合やブラウザがオフライン モードの場合などです。

Cache-Control ヘッダー

Web ページの中には非常に動的なものが存在し、こうしたページの場合、ディスク キャッシシュの必要がありません。このため、Internet Explorer では HTTP 1.1 Cache-Control ヘッダーをサポートしています。このヘッダーの働きにより、HTTP 1.1 サーバーで [no-cash] の値が指定されている場合、特定の Web リソースのキャッシシュをまったく行わないようにすることができます。

キャッシュに保存されていないページにアクセスするには、ブラウザが Web サーバーに再接続する必要があるため、サーバーは、必要な場合にのみ Cache-Control ヘッダーを使用しなければなりません。通常は、"Expires: -1" の使用をお勧めします。

Pragma : No-Cache ヘッダー

従来の HTTP 1.0 サーバーでは Cache-Control ヘッダーを使用することができません。HTTP 1.0 サーバーとの下位互換性を維持するため、Internet Explorer では、HTTP Pragma: no-cache ヘッダーの特別な利用方法をサポートしています。クライアントが、セキュリティで保護された状態 (https://) でサーバーと通信し、サーバーが、Pragma: no-cache ヘッダーを持つ応答を返した場合、Internet Explorer はその応答をキャッシュしません。

しかし、Pragma: no-cache ヘッダーは、こうした用途を想定したものではないことに注意してください。HTTP 1.0 と 1.1 の仕様によれば、このヘッダーは、リクエストのコンテキストにおいてのみ定義されており、応答に関する定義はありません。このヘッダーは実際にはプロキシ サーバーで使用され、特定の重要なリクエストが対象となる Web サーバーに届かないようにすることを目的としています。将来的に適用する場合は、Cache-Control ヘッダーを使ってキャッシュをコントロールする必要があります。

HTTP-EQUIV META タグ

HTML ページでは、HTML ドキュメント内から特定の HTTP ヘッダーを指定する、META タグの 特別な HTTP-EQUIV フォームを使用することができます。次に、Pragma: no-cache と Expires: -1 の両方を使用する HTML ページの簡単な例を挙げます。
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
Pragma: no-cache は、セキュリティで保護された接続で使用された場合にのみ、キャッシュを実行しません。Pragma: no-cache META タグが、セキュリティで保護されていないページで使用された場合、Expires: -1 とまったく同じ働きをします。そのページはキャッシュされますが、直ちに期限が切れるものとしてマークされます。

Cache-Control META HTTP-EQUIV タグはInternet Explorer 4 または 5 では無視され、機能しません。Cache-Control を使用するには、前述の「Cache-Control ヘッダー」で説明した HTTP ヘッダーを使って、このヘッダーを指定する必要があります。

META タグよりも標準の HTTP ヘッダーの使用を強く推奨します。META タグは、通常、HTML HEAD セクションの最初に現れなければなりません。また、Pragma HTTP-EQUIV META タグに関する既知の問題が、少なくとも 1 つ確認されています。関連情報については、Microsoft Knowledge Base の以下の資料を参照してください。
222064 "Pragma: No-cache" タグを使用してもページがキャッシュされる。
Cache-Control ヘッダーを ASP 以外のページで使用する必要がある場合、サーバーの設定で、このヘッダーを自動的に追加するオプションを使用しなければならないことがあります。特定のディレクトリに対するサーバーの応答に HTTP ヘッダーを追加するプロセスについては、ご使用のサーバーのマニュアルを参照してください。たとえば、IIS 4.0 では次の手順を実行します。
  • インターネット サービス マネージャを起動します。
  • コンピュータとサービス ツリーを使って、[既定のWebサイト] (または、対象となる Web サーバー) を開き、Cache-Control ヘッダーを必要とするコンテンツが含まれるディレクトリを探します。
  • そのディレクトリの [プロパティ] ダイアログ ボックスを開きます。
  • [HTTP ヘッダー] タブを選択します。
  • カスタム HTTP ヘッダー グループの [追加] をクリックし、カスタム ヘッダー名に "Cache-Control"、カスタム ヘッダー値に "no-cache" を追加します。
Web サーバー全体にわたって、このヘッダーをグローバルで使用することは避けてください。このヘッダーは、絶対にクライアント側でキャッシュしてはいけないコンテンツにだけ使用してください。この資料で説明した方法を適用して、まだ Internet Explorer でキャッシュの問題が発生する場合、Microsoft のテクニカル サポートに連絡する前に、次のチェックリストにある項目を 1 つずつ確認してください。
  • ASP の "Response.CacheControl" プロパティまたは HTTP 応答ヘッダーによって Cache-Control ヘッダーを使用していますか。Internet Explorer でキャッシュを無効にするには、この方法しかありません。
  • Internet Explorer 4.01 Service Pack 2 以上を使用していますか。これ以前の Internet Explorer でキャッシュを完全に無効にする方法は存在しません。
  • Web サーバーで HTTP 1.1 が有効になっており、サーバーが Internet Explorer に HTTP 1.1 応答を返していることを確認しましたか。HTTP 1.0 応答ではCache-Control ヘッダーを使用することができません。
  • サーバー側で CGI/SAPI/Servlets を使用している場合、HTTP 1.1 の仕様、特に HTTP ヘッダーの CRLF ターミネーションに正確に準拠していますか。パフォーマンスを維持するため、通常 Internet Explorer では、HTTP 1.1 の仕様にない応答は認められていません。このため HTTP 1.1 の仕様に準拠していない場合、ヘッダーが無視されるか、予期しないサーバー エラーが発生します。
  • HTTP ヘッダーのスペルは正しいですか。

関連情報

詳細については、Microsoft Knowledge Base の以下の資料を参照してください。
189409 [IIS]INFO: IIS 4.0 での Web ページのキャッシュの制御

165150 [IIS]IIS および IE での Pragma: No-cache の使用方法
また、 Hypertext Transfer Protocol -- HTTP/1.1 -- Draft Revision 5 も参照してください。

詳細

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 234067 (最終更新日 2000-05-05) をもとに作成したものです。

プロパティ

文書番号: 234067 - 最終更新日: 2003年4月23日 - リビジョン: 1.1
この資料は以下の製品について記述したものです。
  • Microsoft Internet Explorer 4.0 128 ビット版
キーワード:?
kbcaching kbgrpinet kbie400 kbie401 kbie401sp1 kbie401sp2 kbie500 kbie550 kbiefaq KB234067
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com