IIS を使用するときに、Cache-Control HTTP ヘッダーを修正する方法


概要


インターネット インフォメーション サービス (IIS) を使用する Web 管理者は、頻繁に変化するコンテンツのキャッシュ処理を定期的に無効にする必要があります。 この記事では、メタベースのプロパティ CacheControlCustom の値を設定する方法と、ASP (Active Server Pages) を使用して Cache-Control HTTP ヘッダーの値を設定する方法について説明します。

詳細情報


頻繁に変更されるコンテンツを扱うとき、コンテンツごとにキャッシュ可能かキャッシュ不可かを指定したり、クライアントまたはプロキシ サーバーでそのコンテンツをキャッシュするかどうかを指定することができます。 これらのオプションは、IIS の CacheControlCustom プロパティを使用して設定できます。このプロパティは、サーバー全体、特定の Web サイト、または特定の物理ディレクトリや仮想ディレクトリに対して設定できます。 このプロパティを設定すると、次のような HTTP ヘッダーが返されます。
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Cache-Control: <CACHE SETTING>
Content-Type: <type>/<subtype>
Content-Length: <size of content>
キャッシュの設定値は HTTP/1.1 仕様によって決定されます。

一般的に使用する HTTP/1.1 Cache-Control ヘッダー値

RFC 2616 の HTTP/1.1 仕様では、Cache-Control ヘッダーの値がいくつか定義されています。 以下に、一般的に使用される値を示します。
  • Public: 任意のキャッシュが HTTP 応答をキャッシュできます。 たとえば、クライアントとプロキシ サーバーのいずれかで応答をキャッシュできます。 これにより、同じプロキシ サーバーを使用するユーザー間でコンテンツを共有できます。



  • Private: 応答メッセージは 1 つのクライアントを対象とし、共有キャッシュではキャッシュが行われません。 たとえば、クライアントが応答をキャッシュできたとしても、プロキシ サーバーでは応答のキャッシュは行われません。 そのため、あるクライアントがキャッシュされたバージョンを維持しながら、同じプロキシ サーバーを使用する他のクライアントが別のキャッシュされたバージョンを維持できます。




  • No-cache: すべてのパス内のキャッシュは、応答のキャッシュされたコピーを維持しません。 このため、クライアントまたはプロキシ サーバーがその後のコンテンツ要求に対して、キャッシュされたバージョンを使用して応答しないように指定できます。

Cache-Control プロパティの設定

この値を設定する方法を、設定対象ごとに以下に示します。

ページの場合

ASP (Active Server Pages) を使用します。以下の ASP コードによって特定のページのキャッシュが無効になります。
<% @Language="VBScript" %>
<% Response.CacheControl = "no-cache" %>
注: このコードは、HTTP ヘッダーを変更するため、バッファリングが有効でない限り、ページの先頭に挿入する必要があります。

フォルダーの場合

次の例では既定の Web サイトの "Images" という名前のフォルダーまたは仮想ディレクトリの Cache-Control を設定します。
  • Adsutil.vbs の使用:

    1. コマンド プロンプトを開き、C:\InetPub\AdminScripts フォルダーに移動します。
    2. コマンド
      CSCRIPT ADSUTIL.VBS SET W3SVC/1/ROOT/images/CacheControlCustom "no-cache"
  • ADSI スクリプティングの使用:


    1. メモ帳で、以下の ADSI コードを入力します。
      Option Explicit
      Dim objCache
      Set objCache = GetObject("IIS://localhost/w3svc/1/root/images")
      objCache.CacheControlCustom = "no-cache"
      objCache.SetInfo
    2. ファイルに Disablefolder.vbs という名前を付けて、C:\InetPub\AdminScripts フォルダーに保存し、メモ帳を閉じます。
    3. コマンド プロンプトで、C:\InetPub\AdminScripts フォルダーに移動します。
    4. コマンド
      CSCRIPT DISABLEFOLDER.VBS

関連情報

このトピックの詳細については、次の「サポート技術情報」 (Microsoft Knowledge Base) を参照してください。
247389 IIS: How to Disable Caching of Specific MIME Types
また、次の URL から RFC 2616 の HTTP/1.1 仕様のセクション 14.9 を参照してください。
RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1