キャッシュ <caching>
- 概要
- 互換性
- セットアップ
- 方法
- 構成
- サンプル コード
※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。
概要
<caching>
要素では、インターネット インフォメーション サービス (IIS) 7.0 アプリケーションのページ出力のキャッシュを有効または無効にできます。また、ページ出力をユーザー モード、カーネル モード、またはその両方のいずれでキャッシュするか、および出力キャッシュ制限を行う場合はどのような制限を行うか、も構成できます。
<caching>
要素には、ASP.NET ページに適用可能な出力キャッシュ設定のコレクションを含む <profiles>
要素も含まれます。
ページ出力キャッシュでは、ブラウザーの要求後に、ASP ページまたは ASP.NET ページなどの動的なページの応答がメモリに格納されます。ページに対する後続の要求が到着すると、サーバーはページを再度処理する代わりにキャッシュされた応答を送信します。ASP.NET ページ出力キャッシュは、IIS 7.0 出力キャッシュとは異なります。統合 ASP.NET モードを使用するアプリケーションでは、IIS 7.0 出力キャッシュと同様に、ASP.NET ページ出力キャッシュをすべてのコンテンツタイプにプログラムによって使用できます。
ページ出力キャッシュはサーバーの負荷を軽減して応答時間を短縮します。出力キャッシュは、ASP.NET ページなど、頻繁には変更しないデータベース テーブルに依存する半動的なページに最も適しています。
出力キャッシュは、HTML、JPG、GIF ファイルなどの静的なページでは不要であり、頻繁に変更するデータベースから読み取られる動的な ASP.NET または PHP ページではメモリ オーバーヘッドが増えることがあります。
互換性
IIS 7.0 | IIS 6.0 | |
---|---|---|
注意 | <caching> は IIS 7.0 で新たに導入された要素です。 |
なし |
セットアップ
<caching>
要素は、IIS 7.0 の既定のインストールに含まれています。
方法
ページ出力キャッシュの構成方法
タスク バーで [スタート] をクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
[接続] ウィンドウで、ページ出力のキャッシュを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。
[ホーム] ウィンドウで、[出力キャッシュ] までスクロールして [出力キャッシュ] をダブルクリックします。
[操作] ウィンドウで [追加] をクリックします。
[キャッシュ規則の追加] ダイアログ ボックスで、キャッシュするファイル名拡張子を [ファイル名の拡張子] ボックスに入力し、[ユーザー モード キャッシュ] オプション、[カーネル モード キャッシュ] オプション、またはその両方を選択します。
キャッシュに使用するオプションを選択して、[OK] をクリックします。
構成
サーバー レベルでの <caching>
要素の構成は ApplicationHost.config ファイルで、サイト、アプリケーション、またはディレクトリ レベルでのこの要素の構成は Web.config ファイルで、それぞれ設定できます。
属性
属性 | 説明 |
---|---|
enabled |
オプションの Boolean 属性。 ページ出力キャッシュを有効にするかどうかを指定します。 既定値は true です。 |
enableKernelCache |
オプションの Boolean 属性。 カーネル キャッシュを有効にするかどうかを指定します。 既定値は true です。 |
maxCacheSize |
オプションの unit 属性。 出力キャッシュの最大サイズを指定します。 注 :この設定は、ApplicationHost.config ファイルのレベルでのみ有効です。このプロパティを下位レベルで設定しても、効果はありません。 既定値は 0 です。 |
maxResponseSize |
オプションの unit 属性。 キャッシュできる応答の最大サイズを指定します。 注 :この設定は、ApplicationHost.config ファイルのレベルでのみ有効です。このプロパティを下位レベルで設定しても、効果はありません。 既定値は 262144 です。 |
子要素
要素 | 説明 |
---|---|
profiles |
オプションの要素。 ASP.NET ページに適用可能な出力キャッシュ設定のグループが含まれます。 |
構成サンプル
次の構成例では、ユーザー モード キャッシュとカーネル モード キャッシュを有効にします。これらは両方とも、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
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()