次の方法で共有


キャッシュ プロファイルの追加: <add>

概要

<profiles> 要素の <add> 要素は、出力キャッシュ プロファイルのコレクションに出力キャッシュ プロファイルを追加します。

互換性

バージョン メモ
IIS 10.0 <add> 要素は IIS 10.0 では変更されませんでした。
IIS 8.5 <add> 要素は IIS 8.5 では変更されませんでした。
IIS 8.0 <add> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 <add> 要素は IIS 7.5 では変更されませんでした。
IIS 7.0 <profiles> 要素の <add> 要素が IIS 7.0 で導入されました。
IIS 6.0 該当なし

段取り

<profiles> 要素の <add> 要素は、IIS 7 の既定のインストールに含まれています。

操作方法

ページ出力キャッシュを構成する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、ページ出力キャッシュを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[出力キャッシュ] までスクロールして、[出力キャッシュ] をダブルクリックします。
    [出力キャッシュ] アイコンが強調表示されている [ホーム] ウィンドウのスクリーンショット。

  4. [操作] ウィンドウで、[追加] をクリックします。

  5. [キャッシュ規則の追加] ダイアログ ボックスで、キャッシュするファイル名拡張子を [ファイル名拡張子] ボックスに入力してから、[ユーザー モード キャッシュ] オプションと [カーネル モード キャッシュ] オプションのどちらか一方または両方を選びます。

  6. キャッシュに使うオプションを選んでから、[OK] をクリックします。
    [キャッシュ ルールの追加] ダイアログ ボックスのスクリーンショット。[ファイル名の拡張子] フィールドが表示されています。

構成

属性

属性 説明
duration 省略可能な timeSpan 属性。

ページまたはユーザー コントロールがキャッシュされる時間 (秒単位) を指定します

既定値は、00:00:30 です。
extension 必須の文字列属性です。

キャッシュするファイルのファイル名拡張子を指定します。
kernelCachePolicy 省略可能な列挙型属性。

カーネル キャッシュ ポリシーを構成します。

kernelCachePolicy 属性には、次のいずれかの値を指定できます。 既定値は、DontCache です。
Value 説明
DontCache コンテンツはキャッシュされません。

数値は 0 です。
CacheUntilChange コンテンツは、コンテンツが変更されるまでのみキャッシュされます。

数値は 1 です。
CacheForTimePeriod コンテンツは、duration 属性で指定されている時間だけキャッシュされます。

数値は 2 です。
DisableCache キャッシュは無効になり、キャッシュは行われません。

数値は 3 です。
location 省略可能な列挙型属性。

リソースの出力キャッシュされる HTTP 応答の場所を制御する有効な値を指定します。

location 属性には、次のいずれかの値を指定できます。 既定値は、Server です。
Value 説明
Any 出力キャッシュは、ブラウザー クライアント (要求の送信元)、要求に参加しているプロキシ サーバー (または他の任意のサーバー)、または要求が処理されたサーバーに配置できます。

数値は 0 です。
Client 出力キャッシュは、要求の送信元のブラウザー クライアントに配置されます。

数値は 1 です。
Downstream 出力キャッシュは、送信元サーバー以外のすべての HTTP 1.1 キャッシュ対応デバイスに格納できます。 これには、プロキシ サーバーおよび要求を出したクライアントも含まれます。

数値は 2 です。
Server 出力キャッシュは、要求の処理元の Web サーバーに配置されます。

数値は 3 です。
None 出力キャッシュは、要求されたページに対して無効です。

数値は 4 です。
ServerAndClient 出力キャッシュは、元のサーバーまたは要求側のクライアントにだけ格納されます。 プロキシ サーバーは応答をキャッシュすることはできません。

数値は 5 です。
policy 省略可能な列挙型属性。

出力キャッシュ ポリシーを構成します。

policy 属性には、次のいずれかの値を指定できます。 既定値は、DontCache です。
Value 説明
DontCache コンテンツはキャッシュされません。

数値は 0 です。
CacheUntilChange コンテンツは、コンテンツが変更されるまでのみキャッシュされます。

数値は 1 です。
CacheForTimePeriod コンテンツは、duration 属性で指定されている時間だけキャッシュされます。

数値は 2 です。
DisableCache キャッシュは無効になり、キャッシュは行われません。

数値は 3 です。
varyByHeaders 省略可能な文字列属性。

出力キャッシュの変更に使われる HTTP ヘッダーのセミコロン区切りのリストを指定します。 この属性に複数のヘッダーを設定すると、出力キャッシュには、指定したヘッダーの組み合わせごとに異なるバージョンの要求対象ドキュメントが格納されます。
varyByQueryString 省略可能な文字列属性。

出力キャッシュの変更に使われる文字列のセミコロン区切りのリストを指定します。 既定では、これらの文字列は、GET メソッドの属性で送信されるクエリ文字列値、または POST メソッドを使って送信されるパラメーターに対応します。 この属性に複数のパラメーターを設定すると、出力キャッシュには、指定したパラメーターの組み合わせごとに異なるバージョンの要求対象ドキュメントが格納されます。 指定できる値は、none、アスタリスク (*)、任意の有効なクエリ文字列または POST パラメーター名です。

子要素

なし。

構成サンプル

次の構成例では、ユーザー モード キャッシュとカーネル モード キャッシュを有効にします。IIS 7.0 ではどちらも既定で有効になります。 また、<profiles> 要素に含まれる <add> 要素を使って、ファイル名拡張子が .asp であるファイルの出力キャッシュを有効にしています。 また、policy 属性を使って、変更されるまでページを出力キャッシュしています。これは、カーネル キャッシュで kernelCachePolicy 属性を使用する場合と同じです。

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

次のコード例では、最大出力キャッシュ サイズを 1 GB に設定し、出力キャッシュに格納できる応答の最大サイズを 512 KB に設定しています。

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

サンプル コード

次の例では、ファイル名拡張子が .asp であるファイルのページ出力キャッシュを構成し、ASP ファイルが変更されるまでユーザー モードとカーネル モードでキャッシュするように IIS を構成しています。

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()