キャッシュがキャッシュされるのを防ぐInternet Explorer

重要

Internet Explorer 11 デスクトップ アプリケーションは廃止され、2022 年 6 月 15 日にサポートが終了します (対象範囲の一覧については、FAQ を参照してください)。 現在使用しているものと同じ IE11 アプリとサイトを、Internet Explorer モードの Microsoft Edge で開くことができます。 詳細については、こちらを参照してください。

この記事では、HTTP ヘッダーを使用して、ページ内の Web ページのキャッシュを制御Internet Explorer。

元の製品バージョン:   Internet Explorer
元の KB 番号:   234067

まとめ

Microsoft Internet Information Server (IIS) を使用すると、特定のページ (ASP) ページの極端な先頭にある次のスクリプトを使用して、揮発性の高いページや機密性の高いページを簡単にマークActive Server Pagesできます。

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

有効期限と Expires ヘッダー

すべての Web サーバーが、すべての Web ページの有効期限にスキームを使用することを強くお勧めします。 要求元のクライアントに返されるリソースごとに HTTP Expires 応答ヘッダーを使用して有効期限情報を提供しないのは、Web サーバーの悪い習慣です。 現在、ほとんどのブラウザーと中間プロキシは、この有効期限情報を尊重し、ネットワーク上での通信の効率を高めるのに使用します。

常に Expires ヘッダーを使用して、サーバー上の特定のファイルをクライアントによって更新する必要がある最も合理的な時間を指定します。 ページが定期的に更新される場合、更新の次の期間が最も効率的な応答です。 たとえば、インターネット上の毎日のニュース ページで、毎日 5 時に更新されます。 このニュース ページの Web サーバーは、値が 5 A.M の Expires ヘッダーを返す必要があります。 次の日。 完了したら、ページが変更されるまで、ブラウザーは Web サーバーに再度連絡する必要はありません。

変更が予想されないページには、有効期限が約 1 年のマークが付いている必要があります。

多くの場合、Web サーバーには、直ちに変更される可能性がある情報を含む 1 つ以上の揮発性ページがサーバーに含まれています。 これらのページは、サーバーが Expires ヘッダーに "-1" の値を付け、マークする必要があります。 ユーザーによる今後の要求では、通常、Internet Explorer条件付き If-Modified-Since 要求を介して Web サーバーに連絡してページの更新を行います。 ただし、ページはディスク キャッシュ (一時インターネット ファイル) に残ります。 このページは、次のようなリモート Web サーバーに連絡することなく、適切な状況で使用されます。

  • [戻る] ボタンと [転送] ボタンを使用してナビゲーション履歴にアクセスする場合。
  • ブラウザーがオフライン モードの場合。

ヘッダーCache-Control

ただし、一部のページは揮発性または機密性が高く、ディスク キャッシュは不要です。 この処理を行Internet Explorer HTTP 1.1 ヘッダーCache-Controlします。 このヘッダーは、HTTP 1.1 サーバーによってキャッシュなし値が指定されている場合に、特定の Web リソースのすべてのキャッシュを防止します。

キャッシュから保持されているページは、ブラウザーが Web サーバーを再調整するまでアクセスできません。 そのため、サーバーはヘッダーのCache-Control使用する必要があります。 ほとんどの場合、Expires: -1 の使用が優先されます。

Pragma: No-Cache ヘッダー

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

ただし、Pragma: no-cache ヘッダーは、この目的のためではありません。 HTTP 1.0 および 1.1 の仕様に従って、このヘッダーは応答ではなく、要求のコンテキストでのみ定義されます。 これは、特定の重要な要求が宛先 Web サーバーに到達することを妨げる可能性のあるプロキシ サーバーを対象とします。 将来のアプリケーションでは、Cache-Controlヘッダーがキャッシュを制御するための適切な手段です。

HTTP-EQUIV META タグ

HTML ページでは、HTML ドキュメント内の特定の HTTP ヘッダーを指定する特別な HTTP-EQUIV 形式の META タグを使用できます。 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: キャッシュなし META タグは、セキュリティ保護されていないページで使用されている場合、Expires: -1 と同じ方法で処理されます。 ページはキャッシュされますが、すぐに期限切れとしてマークされます。

Cache-Control META HTTP-EQUIV タグは無視され、バージョン 4 または 5 ではInternet Explorer影響しません。 Cache-Control を使用するには、上記のセクションで説明した HTTP ヘッダーを使用してこのヘッダーCache-Control必要があります。

注意

標準 HTTP ヘッダーの使用は、META タグよりずっと優先されます。 META タグは通常、HTML HEAD セクションの上部に表示する必要があります。 プラグマ HTTP-EQUIV META タグには、少なくとも 1 つの既知の問題があります。

キャッシュ用のサーバー オプション

ASP 以外Cache-Controlヘッダーを使用する必要がある場合は、サーバー構成でオプションを使用してこのヘッダーを自動的に追加する必要がある場合があります。 特定のディレクトリのサーバー応答に HTTP ヘッダーを追加するプロセスについては、サーバー ドキュメントを参照してください。 たとえば、IIS 4 では、次の手順を実行します。

  1. IIS マネージャーを起動します。
  2. [コンピューターとサービス] ツリーで、既定の Web サーバー、または問題の Web サーバーを開きます。 ヘッダーに必要なコンテンツを含むディレクトリCache-Controlします。
  3. そのディレクトリの [プロパティ ] ダイアログを開きます。
  4. [HTTP ヘッダー ] タブを選択 します。
  5. [カスタム HTTP ヘッダー ] グループの [追加] ボタンを選択し、ヘッダーCache-Controlの値に対してキャッシュなしを追加します。

Web サーバー全体でこのヘッダーをグローバルに使用するのは良い考えではありません。 その使用を、クライアント上にキャッシュしない必要があるコンテンツに限定します。

問題のチェックリスト

この記事の手法を適用した後もキャッシュと Internet Explorer で問題が解決しない場合は、この便利なチェックリストを確認してから、Microsoft にテクニカル サポートサポートに問い合わせてください。

  • ASP プロパティとCache-Control返される HTTP ヘッダーを使用 Response.CacheControl していますか? これは、キャッシュを実際に防止する唯一の方法Internet Explorer。
  • 4.01 Internet Explorer 2 以上を使用していますか? 以前のバージョンのブラウザーでキャッシュを完全に防止する方法はありません。
  • Web サーバーが HTTP 1.1 を有効にし、HTTP 1.1 応答をサーバーに返Internet Explorer。 Cache-Control HTTP 1.0 応答では、ヘッダーが無効です。
  • サーバー側で CGI/ISAPI/サーブレットを使用している場合、HTTP ヘッダーの CRLF 終了について、HTTP 1.1 仕様を正確に実行していますか? パフォーマンスの点では、通常、Internet Explorer HTTP 1.1 仕様に違反する応答が許されない場合があります。 通常、ヘッダーが無視されたり、予期しないサーバー エラーが報告されたりします。
  • HTTP ヘッダーのスペルが正しいか。

関連項目