スキーム: <scheme>
概要
<httpCompression>
要素の <scheme>
要素は、インターネット インフォメーション サービス (IIS) 7 での GNU zip (Gzip) と Deflate の圧縮スキームに対する次の設定を指定します。
name と dll 属性は、それぞれ、圧縮スキームの名前とプロバイダー DLL を指定します。 IIS 7 では Gzip と Deflate の両方の圧縮がサポートされており、現在、どちらの圧縮スキームも %windir%\system32\inetsrv\gzip.dll で実装されています。
doStaticCompression 属性は、name 属性で指定されている圧縮スキームに対して静的圧縮を有効にするかどうかを指定します。 doStaticCompression を true に設定すると、クライアントによって要求されたら静的コンテンツを圧縮することを指定します。 静的圧縮が有効な場合は、"Accept-Encoding: gzip" または "Accept-Encoding: deflate" ヘッダーを含む要求が静的コンテンツに対して行われるたびに、ヘッダーで指定されている圧縮スキームが IIS で有効になっている限り、コンテンツが圧縮されます。 要求にこのヘッダーが含まれていない場合、または IIS で有効になっていない圧縮スキームがヘッダーで指定されている場合、コンテンツは圧縮されません。
IIS は、応答を圧縮する必要があると判断した場合、<httpCompression> 要素の directory 属性で指定されている圧縮ディレクトリを調べます。 新しい圧縮バージョンの静的ファイルがディレクトリに見つかった場合は、それがクライアント ブラウザーに送信されます。 新しい圧縮バージョンのファイルが見つからず、<urlCompression> 要素の dynamicCompressionBeforeCache 属性でオンデマンド圧縮が有効になっている場合、IIS は要求されたファイルを非圧縮形式で送信し、そのファイルをバックグラウンド圧縮キューに追加します。
doDynamicCompression 属性は、name 属性で指定されている圧縮スキームに対して動的圧縮を有効にするかどうかを指定します。 doDynamicCompression を true に設定すると、クライアントによって要求されたら動的コンテンツを圧縮することを指定します。 動的圧縮が有効な場合は、"Accept-Encoding: gzip" または "Accept-Encoding: deflate" ヘッダーを含む要求が動的コンテンツに対して行われるたびに、ヘッダーで指定されている圧縮スキームが IIS で有効になっている限り、コンテンツが圧縮されます。 要求にこのヘッダーが含まれていない場合、または IIS で有効になっていない圧縮スキームがヘッダーで指定されている場合、コンテンツは圧縮されません。
Note
定義からして、動的コンテンツは常に変化するため、IIS は動的コンテンツの圧縮バージョンをキャッシュしません。 動的圧縮は、CPU 時間とメモリ リソースをかなり消費するため、ネットワーク接続が遅く、CPU 時間に余裕があるサーバーでのみ使う必要があります。
dynamicCompressionLevel と staticCompressionLevel 属性は、それぞれ、IIS が動的または静的なコンテンツを圧縮するときの圧縮スキームの圧縮レベルを指定します。 圧縮レベルが低いほど、圧縮ファイルは少しずつ大きくなりますが、CPU とメモリ リソースへの全体的な影響は小さくなります。 一般に、圧縮レベルが高いほど圧縮ファイルは小さくなりますが、CPU とメモリの使用率が高くなります。
Note
既定では、IIS 7 で使用できる圧縮スキームは Gzip のみです。 プログラムで Deflate 圧縮スキームを有効にするには、このドキュメントのコード サンプルのセクションをご覧ください。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <scheme> 要素は、IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <scheme> 要素は、IIS 8.5 では変更されませんでした。 |
IIS 8.0 | <scheme> 要素は、IIS 8.0 では変更されませんでした。 |
IIS 7.5 | <scheme> 要素は、IIS 7.5 では変更されませんでした。 |
IIS 7.0 | <httpCompression> 要素の <scheme> 要素が IIS 7.0 で導入されました。 |
IIS 6.0 | <scheme> 要素は、次の IIS 6.0 メタベース プロパティを置き換えます。
|
段取り
HTTP 圧縮は通常、IIS 7 以降の既定のインストールで使用できます。 ただし、既定では静的圧縮のみがインストールされます。 静的または動的圧縮をインストールするには、次の手順を使います。
Windows Server 2012 または Windows Server 2012 R2
- タスク バーで [サーバー マネージャー]をクリックします。
- [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。
- [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選び、[次へ] をクリックします。
- [サーバーの役割] ページで、[Web サーバー (IIS)]、[Web サーバー] の順に展開し、[パフォーマンス] を展開して、[静的なコンテンツ圧縮] または [動的コンテンツ圧縮]、あるいはその両方を選択します。 次へ をクリックします。
- [機能の選択] ページで、[次へ] をクリックします。
- [インストール オプションの確認] ページで、[インストール] をクリックします。
- [結果] ページで、 [閉じる]をクリックします。
Windows 8 または Windows 8.1
- [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
- [コントロール パネル] で [プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
- [インターネット インフォメーション サービス]、[World Wide Web サービス]、[パフォーマンス機能] の順に展開し、[動的なコンテンツ圧縮] または [静的なコンテンツ圧縮] を選択します。
- OK をクリックします。
- 閉じるをクリックします。
Windows Server 2008 または Windows Server 2008 R2
- タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。
- [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。
- [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。
- ロール サービスの追加ウィザードの [役割サービスの選択] ページで動的圧縮をインストールし、静的圧縮 をインストールする場合はダイナミック圧縮 Content 圧縮をする場合は静的圧縮を選択し、[次へ] をクリック。
- [インストール オプションの確認] ページで、[インストール] をクリックします。
- [結果] ページで、 [閉じる]をクリックします。
Windows Vista または Windows 7
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [コントロール パネル] で [プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
- [インターネット インフォメーション サービス]、[World Wide Web サービス]、[パフォーマンス機能] の順に展開します。
- 動的な圧縮をインストールする場合は [動的 HTTP 圧縮] を選択し、静的なコンテンツ圧縮をインストールする場合は [静的なコンテンツ圧縮] を選択します。
- OK をクリックします。
操作方法
IIS 7 には圧縮スキームを設定するためのユーザー インターフェイスはありません。 プログラムで圧縮スキームを設定する方法の例については、このドキュメントのコード サンプルのセクションをご覧ください。
構成
属性
属性 | 説明 |
---|---|
dll |
必須の文字列属性です。 圧縮スキームに関連付けられている圧縮 DLL の完全修飾ファイル システム パスとファイル名を指定します。 この属性に対する変更を有効にするには、World Wide Web 発行サービス (WWW サービス) を再起動する必要があります。 |
doDynamicCompression |
省略可能な Boolean 属性です。 Active Server Pages (ASP) や ISAPI 拡張機能のスクリプトなど、動的コンテンツの要求に対する応答を圧縮するかどうかを指定します。 個々の圧縮スキーム レベルでこの値を変更した場合、変更を有効にするには、WWW サービスを再起動する必要があります。 既定値は true です。 |
doStaticCompression |
省略可能な Boolean 属性です。 静的コンテンツの要求に対する応答を IIS が圧縮するかどうかを指定します。 この属性は継承できないため、name 属性が Gzip に設定されている場合は、グローバル レベル (<httpCompression>) と個々のスキーム レベルの両方で true に設定する必要があります。 個々の圧縮スキーム レベルでこの値を変更した場合、変更を有効にするには、WWW サービスを再起動する必要があります。 注: 静的圧縮ストアは、NTFS を使用してフォーマットされたディスク パーティションまたはリモート共有に配置する必要があります。 ファイル ストアが NTFS でない場合、静的圧縮は無効になります。 セキュリティ上の理由から、FAT キャッシュ ストアから圧縮された応答は提供されません。 既定値は true です。 |
dynamicCompressionLevel |
省略可能な uint 属性。 動的コンテンツが圧縮されるときの圧縮スキームの圧縮レベルを指定します。 レベルの範囲は、0 (最低の圧縮レベルで最小の CPU 使用率) から 10 (最高の圧縮レベルで最高の CPU 使用率) までです。 この属性に対する変更を有効にするには、WWW サービスを再起動する必要があります。 注: 動的圧縮は、CPU 時間とメモリ リソースをかなり消費するため、ネットワーク接続が遅く、CPU 時間に余裕があるサーバーでのみ使ってください。 圧縮された静的応答はキャッシュできるため、動的応答のような CPU リソースへの影響はありません。 既定値は 0 です。 |
name |
必須の文字列属性です。 圧縮スキームの名前を指定します。 たとえば、Gzip または Deflate などです。 |
staticCompressionLevel |
省略可能な uint 属性。 静的コンテンツが圧縮されるときの圧縮スキームの圧縮レベルを指定します。 レベルの範囲は、0 (最低の圧縮レベルで最小の CPU 使用率) から 10 (最高の圧縮レベルで最高の CPU 使用率) までです。 0 は、圧縮が無効になっていることを意味します。 この属性に対する変更を有効にするには、WWW サービスを再起動する必要があります。 既定値は 7 です。 |
子要素
要素 | 説明 |
---|---|
remove |
省略可能な要素です。 HTTP 圧縮スキーム コレクションから HTTP 圧縮スキームへの参照を削除します。 |
clear |
省略可能な要素です。 HTTP 圧縮スキーム コレクションから HTTP 圧縮スキームへの参照をすべて削除します。 |
構成サンプル
次の既定の <httpCompression>
要素は、IIS 7 の ApplicationHost.config ファイルで構成されます。 この構成セクションは、<clear>
要素を使用しない限り、既定の構成設定を継承します。
<httpCompression
directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
サンプル コード
次のコード サンプルは、Deflate 圧縮スキームを IIS 7 に追加します。
AppCmd.exe
appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /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 httpCompressionSection = config.GetSection("system.webServer/httpCompression");
ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();
ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
schemeElement["name"] = @"deflate";
schemeElement["doStaticCompression"] = true;
schemeElement["doDynamicCompression"] = true;
schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
httpCompressionCollection.Add(schemeElement);
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 httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
Dim httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection
Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
schemeElement("name") = "deflate"
schemeElement("doStaticCompression") = True
schemeElement("doDynamicCompression") = True
schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.Add(schemeElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var httpCompressionCollection = httpCompressionSection.Collection;
var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set httpCompressionCollection = httpCompressionSection.Collection
Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)
adminManager.CommitChanges()