IIS 圧縮の概要

作成者: Yanbing Shi

この記事では、IIS 圧縮の概要について説明します。

IIS 圧縮とは

IIS 圧縮 は、IIS の機能を拡張して HTTP 応答を圧縮する 2 つの IIS 圧縮スキーム プロバイダー (iisbrotli.dlliiszlib.dll) のバンドルです。 iisbrotli.dllBrotli 圧縮をサポートし、iiszlib.dllGzipDeflate 圧縮の両方をサポートします。

圧縮スキーム プロバイダーとは

IIS 圧縮スキーム プロバイダー:

  • IIS StaticCompressionModule および DynamicCompressionModule のプラグ可能な拡張機能です。
  • 1 つ以上の HTTP 圧縮スキームの実装を提供します。

IIS StaticCompressionModule および DynamicCompressionModule:

  • 登録済みの圧縮スキーム プロバイダーを実行時にワーカー プロセスに読み込みます。
  • これらを利用して、静的ファイルと動的に生成されたコンテンツに対してそれぞれの圧縮を実行します。

IIS 圧縮を使用する理由

IIS には、既定の圧縮スキーム プロバイダーとして gzip.dll が付属しています。

  • これは、GzipDeflate 圧縮の両方をサポートします。
  • 既定では、gzip スキームとして applicationHost.config に登録されます。

付属の gzip.dll は、Gzip と Deflate エンコードの内部実装に基づいており、適切に動作します。 では、なぜ IIS 圧縮に新しい圧縮スキーム プロバイダーを導入するのでしょうか。

Brotli 圧縮による高い圧縮率

Brotli 圧縮:

  • HTTP 圧縮に比較的新たに追加されました。
  • Brotli のエンコード アルゴリズムと形式は、Requests For Comment (RFC) 仕様 7932 で規定されています。
  • Brotli で圧縮された応答データ ストリームには、コンテンツ エンコードタイプ "br" が付きます。
  • 圧縮速度は遅くなりますが、GzipDeflate よりも高い圧縮率を提供することができます。

一般に、クライアント (ブラウザー) 側での Brotli 展開の方が高速です。 Brotli 圧縮を有効にすると、特に静的コンテンツに使用する場合にパフォーマンスが向上する可能性があります。

より優れた Gzip 圧縮スキーム プロバイダー

IIS 圧縮に含まれる iiszlib.dll は、既定のプロバイダーである gzip.dll と同じ GzipDeflate 圧縮を提供しますが、iiszlib.dll には次のメリットがあります。

  • より最新です。
  • CPU 使用率の点でパフォーマンスが向上します。
  • zlib ライブラリにより、動的圧縮のサポートが向上します。

オープン ソース

IIS Compression:

  • サポートされているオープンソース製品です。
  • ソース コードは、IIS.Compression Github リポジトリで確認できます。
  • オープンソースの brotli および zlib 圧縮ライブラリをコア エンコーダーとして使用します。
  • IIS HTTP 圧縮 API を実装することで、brotli ライブラリと zlib ライブラリを IIS 圧縮モジュールとブリッジします。

IIS Compression がオープンソースであることで、コミュニティに透明性が提供され、柔軟でアジャイルな将来の機能強化、バグ修正、カスタマイズが可能になります。 また、このプロジェクトは、IIS 圧縮スキーム プロバイダーを開発するための一般的なリファレンスをコミュニティに提供します。

IIS 圧縮のインストール

インストール前

iiszlib.dll および iisbrotli.dll 圧縮スキーム プロバイダーは、IIS モジュールではなく、IIS StaticCompressionModule および DynamicCompressionModule の拡張機能です。 実行時に、StaticCompressionModuleDynamicCompressionModule は、この圧縮スキーム プロバイダーを読み込み、応答コンテンツ データをそれらに渡して圧縮します。

そのため、2 つの圧縮モジュールの一方または両方を、前提条件として IIS サーバーにインストールする必要があります。 機能をインストールする方法については、「HTTP 圧縮」を参照してください。 モジュールがインストールされたら、目的の URL 名前空間に対して静的圧縮または動的圧縮が有効になっていることを確認します。 対応する圧縮のタイプを有効にする方法については、「URL 圧縮」を参照してください。

インストール

  1. 次の場所から Microsoft IIS 圧縮リリースをダウンロードします。

  2. 管理者ユーザー権限を使って、コマンド プロンプトを開きます。

  3. 次のように入力して、WAS サービスと W3SVC サービスを停止します。

    net stop was /y
    
  4. iiscompression_<architecture>.exe を実行します。例:

    msiexec /I iiscompression_x86.msi
    
    msiexec /I iiscompression_amd64.msi
    
  5. 使用許諾契約 (EULA) に同意します。

  6. インストールを完了します。

  7. 次のように入力して、WAS サービスと W3SVC サービスを開始します。

    net start w3svc
    

IIS 圧縮インストーラーにより、iisbrotli.dlliiszlib.dll%ProgramFiles%\IIS\IIS Compression にドロップされます。 インストーラーにより、iisbrotli.dllbr (Brotli) 圧縮スキーム プロバイダーとして applicationHost.config に登録されます。また、既定の gzip 圧縮スキーム プロバイダー gzip.dlliiszlib.dll に置き換えられます。 applicationHost.config<httpCompression> 要素のサンプルを以下に示します。

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="br" dll="%ProgramFiles%\IIS\IIS Compression\iisbrotli.dll" />
    <scheme name="gzip" dll="%ProgramFiles%\IIS\IIS Compression\iiszlib.dll" />
    <dynamicTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" 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="application/atom+xml" enabled="true" />
        <add mimeType="application/xaml+xml" enabled="true" />
        <add mimeType="image/svg+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>