スキーム: <scheme>

概要

<httpCompression> 要素の <scheme> 要素は、インターネット インフォメーション サービス (IIS) 7 での GNU zip (Gzip) と Deflate の圧縮スキームに対する次の設定を指定します。

  • namedll 属性は、それぞれ、圧縮スキームの名前とプロバイダー DLL を指定します。 IIS 7 では Gzip と Deflate の両方の圧縮がサポートされており、現在、どちらの圧縮スキームも %windir%\system32\inetsrv\gzip.dll で実装されています。

  • doStaticCompression 属性は、name 属性で指定されている圧縮スキームに対して静的圧縮を有効にするかどうかを指定します。 doStaticCompressiontrue に設定すると、クライアントによって要求されたら静的コンテンツを圧縮することを指定します。 静的圧縮が有効な場合は、"Accept-Encoding: gzip" または "Accept-Encoding: deflate" ヘッダーを含む要求が静的コンテンツに対して行われるたびに、ヘッダーで指定されている圧縮スキームが IIS で有効になっている限り、コンテンツが圧縮されます。 要求にこのヘッダーが含まれていない場合、または IIS で有効になっていない圧縮スキームがヘッダーで指定されている場合、コンテンツは圧縮されません。

    IIS は、応答を圧縮する必要があると判断した場合、<httpCompression> 要素の directory 属性で指定されている圧縮ディレクトリを調べます。 新しい圧縮バージョンの静的ファイルがディレクトリに見つかった場合は、それがクライアント ブラウザーに送信されます。 新しい圧縮バージョンのファイルが見つからず、<urlCompression> 要素の dynamicCompressionBeforeCache 属性でオンデマンド圧縮が有効になっている場合、IIS は要求されたファイルを非圧縮形式で送信し、そのファイルをバックグラウンド圧縮キューに追加します。

  • doDynamicCompression 属性は、name 属性で指定されている圧縮スキームに対して動的圧縮を有効にするかどうかを指定します。 doDynamicCompressiontrue に設定すると、クライアントによって要求されたら動的コンテンツを圧縮することを指定します。 動的圧縮が有効な場合は、"Accept-Encoding: gzip" または "Accept-Encoding: deflate" ヘッダーを含む要求が動的コンテンツに対して行われるたびに、ヘッダーで指定されている圧縮スキームが IIS で有効になっている限り、コンテンツが圧縮されます。 要求にこのヘッダーが含まれていない場合、または IIS で有効になっていない圧縮スキームがヘッダーで指定されている場合、コンテンツは圧縮されません。

    Note

    定義からして、動的コンテンツは常に変化するため、IIS は動的コンテンツの圧縮バージョンをキャッシュしません。 動的圧縮は、CPU 時間とメモリ リソースをかなり消費するため、ネットワーク接続が遅く、CPU 時間に余裕があるサーバーでのみ使う必要があります。

  • dynamicCompressionLevelstaticCompressionLevel 属性は、それぞれ、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 メタベース プロパティを置き換えます。
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

段取り

HTTP 圧縮は通常、IIS 7 以降の既定のインストールで使用できます。 ただし、既定では静的圧縮のみがインストールされます。 静的または動的圧縮をインストールするには、次の手順を使います。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。
  2. [サーバー マネージャー] で、[管理] メニューをクリックし、[役割と機能の追加] をクリックします。
  3. 役割と機能の追加ウィザードで、[次へ] をクリックします。 インストールの種類を選んで、[次へ] をクリックします。 対象サーバーを選び、[次へ] をクリックします。
  4. [サーバーの役割] ページで、[Web サーバー (IIS)][Web サーバー] の順に展開し、[パフォーマンス] を展開して、[静的なコンテンツ圧縮] または [動的コンテンツ圧縮]、あるいはその両方を選択します。 次へ をクリックします。
    Screenshot of Performance pane expanded with Static Content Compression selected and Dynamic Content Compression highlighted.
  5. [機能の選択] ページで、[次へ] をクリックします。
  6. [インストール オプションの確認] ページで、[インストール] をクリックします。
  7. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
  3. [インターネット インフォメーション サービス][World Wide Web サービス][パフォーマンス機能] の順に展開し、[動的なコンテンツ圧縮] または [静的なコンテンツ圧縮] を選択します。
    Screenshot shows Performance Features pane in Turn Windows features on or off page expanded and Static Content Compression highlighted.
  4. OK をクリックします。
  5. 閉じるをクリックします。

Windows Server 2008 または Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャー] をクリックします。
  2. [サーバー マネージャー] 階層ウィンドウで [役割] を展開して、[Web サーバー (IIS)] をクリックします。
  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。
  4. 役割サービスの追加ウィザード[役割サービスの選択] ページで、動的なコンテンツ圧縮をインストールする場合は [動的なコンテンツ圧縮] を選択し、静的なコンテンツ圧縮をインストールする場合は [静的なコンテンツ圧縮] を選択し、[次へ] を選択します。
    Screenshot shows Select Role Services page with Performance node expanded and Dynamic Content Compression highlighted.
  5. [インストール オプションの確認] ページで、[インストール] をクリックします。
  6. [結果] ページで、 [閉じる]をクリックします。

Windows Vista または Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。
  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
  3. [インターネット インフォメーション サービス][World Wide Web サービス][パフォーマンス機能] の順に展開します。
  4. 動的な圧縮をインストールする場合は [動的 HTTP 圧縮] を選択し、静的なコンテンツ圧縮をインストールする場合は [静的なコンテンツ圧縮] を選択します。
    Screenshot of Turn Windows features on or off page showing Performance Features node expanded and H T T P Common Dynamics selected.
  5. 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 ファイルの適切な location セクションに構成設定がコミットされます。

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()