チュートリアル: IIS 7.0 出力キャッシュ

投稿者 : Saad Ladki

Web コンテンツは、静的コンテンツと動的コンテンツという 2 つのカテゴリに分けることができます。 静的コンテンツは要求ごとに変更されません。 Web ブラウザーに返されるコンテンツは常に同じです。 静的コンテンツの例には、HTML ファイル、JPG または GIF ファイルが含まれます。

もう一方は動的コンテンツです。 これは、要求ごとの動的コンテンツの変更に対して生成される応答です。 この例には、ASP.NET または PHP コンテンツが含まれます。

この 2 つのカテゴリの間には、半動的コンテンツを含む大きな範囲があります。 データベース クエリを実行する動的な ASP.NET ページを想像してください。 基になるデータベース テーブルがまれにしか変更されない場合は、このクエリを要求ごとに実行する理由はありません。

IIS 出力キャッシュ機能は、半動的コンテンツを対象としています。 これにより、動的な要求に対して静的な応答をキャッシュし、きわめて大きなスケーラビリティを実現できるようになります。

前提条件

このチュートリアルでは、Windows® Vista SP1 または Windows Server® 2008 Beta 3 以降の IIS 7.0 以降が必要です。 また、このチュートリアルでは、IIS セットアップ内のオプション コンポーネントとしてインストールする必要がある ASP.NET 2.0 も使用します。

チュートリアルの概要

次のチュートリアルでは、IIS 機能拡張インターフェイスを使用して、言語固有の著作権メッセージを JPG ファイルに追加します。

最初に、これをマネージド ハンドラーの追加によって行います。 ただし、現在は JPG ファイルごとにマネージド コードを実行する必要があるため、JPG ファイルごとに著作権メッセージを動的に挿入するとコストが発生します。

次に、JPG 著作権ハンドラーのスループットを測定するために、IIS パフォーマンス分析ツールである WCAT をインストールします。

その後、著作権ハンドラーの追加によって発生したパフォーマンス低下を取り戻すために、出力キャッシュを追加します。

  1. %systemroot%\inetpub\wwwroot ディレクトリの下に "pictures" という名前のディレクトリを作成します。 管理者特権コマンド シェルで次のコマンドを実行します。

    md %systemdrive%\inetpub\wwwroot\pictures
    
  2. いくつかのデジタル画像 (このチュートリアルでは、これらを JPG ファイルと見なしています) を新しい pictures ディレクトリにコピーします。

    Note

    Windows Server 2008 での Internet Explorer の高いセキュリティ設定のために、Web サイトがブロックされていることを示すセキュリティ ダイアログ ボックスが表示される場合があります。 IIS の壁紙をダウンロードするには、信頼済みサイトの一覧に wallpaper.iis7.org を追加します。

  3. appcmd コマンド ライン ツールを使用してアプリケーションを作成します。

    %windir%\system32\inetsrv\appcmd add app -site.name:"Default Web Site" 
    
        -path:/pictures -physicalPath:%systemdrive%\inetpub\wwwroot\pictures
    
  4. pictures ディレクトリの下にディレクトリ App_Code を作成します。

    md %systemdrive%\inetpub\wwwroot\pictures\App_Code
    
  5. メモ帳を開き、そこに次のコードを貼り付けます。

    using System;
    using System.Web;
    using System.Drawing;
    using System.Drawing.Imaging;
              
    namespace IIS7Demos
    {
        public class imageCopyrightHandler : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                string message = "Copyright © IIS 7.0 Team";
                try            {
                    string languageHeader;
             languageHeader = context.Request.Headers["Accept-Language"].Substring(0,2).ToUpper();
                    switch (languageHeader)
                    {
                        case ("DE"):
                            message = "IIS 7.0 Team - Alle Rechte vorbehalten";
                            break;
                        case ("ES"):
                            message = "Marca Registrada IIS 7.0 Team";
                            break;
                        default:
                            break;
                    }
                }
                catch 
               { 
                    // if something fails, e.g. no Language-Accept header, we go with the english message 
               }
                InsertCopyrightMessage (   context, 
                                message, 
                                "yellow"                            
                            );
            }
            void InsertCopyrightMessage(
                                HttpContext context, 
                                string message, 
                                string color
                             )
            {
                try 
                {
                    // get physical path of request 
                    string strPath = context.Request.PhysicalPath;
                    // load as bitmap 
                    Bitmap jpgFile = new Bitmap(strPath);
                    // add copyright message 
                    Graphics g = Graphics.FromImage(jpgFile);
                    Font f = new Font("Arial", 20, GraphicsUnit.Pixel);
                    SolidBrush sb = new SolidBrush(Color.FromName(color));
                    // write copyright message to bitmap 
                    g.DrawString(   message, 
                                    f, 
                                    sb, 
                                    5, 
                                    jpgFile.Height - f.Height - 5
                                );
                    f.Dispose();
                    g.Dispose();
    
                    // save it to response stream 
                    jpgFile.Save(   context.Response.OutputStream, 
                                    System.Drawing.Imaging.ImageFormat.Jpeg
                                );
                    jpgFile.Dispose();
                }
                catch (Exception e)
                {
                    context.Response.Write(e.Message);
                }
            }
              
            public bool IsReusable
            {
                get { return true; }
            }
        }
    }
    

    このファイルを %systemdrive%\inetpub\wwwroot\pictures\App\_Code\imageCopyrightHandler.cs として保存します。

  6. JPG ファイルが要求されたときにこのコードを実行するハンドラーを作成します。

    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers 
    
        /+[name='imageCopyrightHandler-Integrated',path='*.jpg',
    
        verb='GET,HEAD',type='IIS7Demos.imageCopyrightHandler',preCondition='integratedMode']
    
  7. まだ既定のドキュメントがないため、ディレクトリの参照も有効にする必要があります。

    %windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures" 
    
        -section:directoryBrowse -enabled:true
    
  8. Internet Explorer のアドレス バーに「http://localhost/pictures」と入力して pictures アプリケーションを参照します。 IIS のディレクトリ一覧で、JPG ファイルへのリンクをクリックします。 挿入された著作権メッセージが付いた JPG 画像が表示されます。

  9. コードを見てください。 著作権メッセージは、ブラウザーが送信する "Accept-Language" ヘッダーによって異なることがわかります。 ドイツ語バージョンの Microsoft Server 2008 がインストールされている場合は、"IIS 7.0 チーム - Alle Rechte vorbehalten" という著作権メッセージが表示されます。スペイン語の言語バージョンの場合は、"Marca Registrada IIS 7.0 チーム" が表示されます。 その他のすべての場合、著作権メッセージは "Copyright © IIS 7.0 チーム" になります。 このコードをテストする方法として、Internet Explorer が送信する "Accept-Language" ヘッダーを変更します。

    • "Internet Explorer" を開きます。
    • [ツール] メニューを開き、[インターネット オプション] をクリックします。
    • [言語] ボタンをクリックします。
    • [追加...] ボタンをクリックし、スペイン語の場合は "es"、ドイツ語の場合は "de" を追加します。
    • [上へ移動] ボタンを使用して、新しい言語を一覧の一番上に移動します。
    • http://localhost/pictures/<your_jpg_file>.jpg を参照します。 著作権メッセージが、構成した言語に変更されました。
    • [言語] ダイアログ ボックスに戻ってリセットすることを忘れないでください。そうしないと、後で、なぜスペイン語またはドイツ語の Web ページが表示されるのか疑問に思うかもしれません。

パート 2 - imageCopyrightHandler のパフォーマンス テスト

JPG 著作権ハンドラーが機能したら、このコードの実行速度を判定する必要があります。 パフォーマンス テストを実行するために IIS 6.0 リソース キット ツールをインストールします。

  1. IIS 6.0 リソース キット ツールをダウンロードしてインストールします。 カスタム インストールを実行し、Web 容量分析ツール (WCAT) のみをインストールします。 WCAT は、このパフォーマンス テストを実行するために必要な IIS 6.0 リソース キット ツールの唯一の機能です。

    Note

    Windows Server 2008 での Internet Explorer の高いセキュリティ設定のために、Web サイトがブロックされていることを示すセキュリティ ダイアログ ボックスが表示される場合があります。 IIS 6.0 リソース キットをダウンロードするには、信頼済みサイトの一覧に *.microsoft.com を追加します。

  2. PERFTEST という名前のディレクトリを作成します。たとえば、次のように入力します。

    md %systemdrive%\perftest
    
  3. WCAT コントローラーには、次の 3 つの入力ファイルが必要です。

    • WCAT にどの URL を要求するかを指示するスクリプト ファイル。 各 URL に一意の ClassID が割り当てられます。
    • WCAT に、スクリプト ファイルで指定された URL にわたって要求を配布する方法を指示する配布ファイル。
    • 特定のパフォーマンス実行のパラメーター (テストの期間や、シミュレートする HTTP クライアントの数など) を構成する構成ファイル。

    スクリプト ファイル

    perftest ディレクトリ内に script.cfg という名前の新しいファイルを作成し、その中に次の内容を貼り付けます。

    NEW TRANSACTION
        classId = 1
        NEW REQUEST HTTP
            Verb = "GET"
            URL = "http://localhost/pictures/<your image name>.JPG"
    NEW TRANSACTION
        classId = 2
        NEW REQUEST HTTP
            Verb = "GET"
            URL = "http://localhost/pictures/<your image name>.JPG"
    

    Note

    <your image name> エントリを JPG ファイルの名前に置き換えてください。 さらに多くの JPG ファイルがある場合は、新しいトランザクションを追加できます。 各トランザクションに必ず新しい ClassID を割り当ててください。

    配布ファイル

    配布ファイルは、WCAT に要求を重み付けする方法を指示します。 上の 2 つの URL では、50/50 の均一の配布を行います。 各 ClassID が時間の 50% 要求されます。

    perftest ディレクトリ内に %systemdrive%\perftest\distribution.cfg という名前のファイルを作成し、その中に次の内容を貼り付けます。

    1 50
    2 50
    

    構成ファイル

    テストに推奨されるパラメーターを次に示します。

    • 期間: 30 秒
    • ウォームアップ: 5 秒
    • クールダウン: 5 秒
    • シミュレートされる HTTP クライアント数: 20

    perftest ディレクトリ内に config.cfg という名前のファイルを作成し、その中に次の内容を貼り付けます。

    Warmuptime 5s
    Duration 30s
    CooldownTime 5s
    NumClientMachines 1
    NumClientThreads 20
    
  4. 次のコマンドを実行して、コントローラーを起動します。

    Cd \perftest
    "%programfiles%\IIS Resources\WCAT Controller\wcctl" 
        -c config.cfg -s script.cfg -d distribution.cfg -a localhost
    

    すべてのクライアントが接続されるとすぐに、パフォーマンス テストが開始されます。

  5. クライアントは 1 つしかないため、別の管理者特権コマンド シェルを開き、次のコマンドを実行します。

    "%programfiles%\IIS Resources\WCAT Client\wcclient.exe" localhost
    

    これをさらに多くのクライアントで行うには、config.cfg 内の NumClientMachines をより大きな数に設定し、コントローラー マシンの名前を指定することによって、wcclient コマンド経由でクライアントをコントローラーに接続します。

    例: wcclient MyPerfTestControllerMachine

    Note

    これを 64 ビット版の Windows で行うと、WCAT が "Program Files (x86)" ディレクトリにインストールされるため、%programfiles(x86)% を使用して WCAT を起動する必要があります。

  6. 最初の実行の結果を次に示します。

    ########################################################################
    WCAT Performance Statistics_________________________________
    Server                      :      localhost      ()
    #Transactions               :              3      (HTTP/1.1)
    Total Async Sockets         :             20      (5 WCAT Pool Threads)
    Total Elapsed Time          :             30 Secs (0 Hrs,0 Mins,30 Secs)
    Current Connections         :             20
    Total Connection Attempts   :            436      (   14/Sec)
    Total Connect Errors        :              0      (    0/Sec)
    Total Success Connections   :            436      (   14/Sec)
    Total Consec. Connect Errors:              0      (    0/Sec)
    Total Bytes                 :       32301100      ( 1051 KB/Sec)
    Total Bytes Written         :          32264      (    1 KB/Sec)
    Total Bytes Read            :       32268836      ( 1050 KB/Sec)
    Total Requests              :            436      (   14/Sec)
    Total Responses             :            436      (   14/Sec)
    Total Socket Reads          :           6976      (  232/Sec)
    Total Socket Writes         :            436      (   14/Sec)
    Total Parse Errors          :              0      (    0/Sec)
    Total Socket Errors         :              0      (    0/Sec)
    Total I/O Errors            :              0      (    0/Sec)
    Total Internal Errors       :              0      (    0/Sec)
    Total Time Outs             :              0      (    0/Sec)
    Total 200 OK                :            436      (   14/Sec)
    Total 30X Redirect          :              0      (    0/Sec)
    Total 304 Not Modified      :              0      (    0/Sec)
    Total 404 Not Found         :              0      (    0/Sec)
    Total 500 Server Error      :              0      (    0/Sec)
    Total Bad Status            :              0      (    0/Sec)
    Min. Connect Time           :              0 MS
    Avg. Connect Time           :              0 MS
    Max. Connect Time           :             16 MS
    Min. Resp Time (1st Byte)   :           1281 MS
    Avg. Resp Time (1st Byte)   :           1371 MS
    Max. Resp Time (1st Byte)   :           1578 MS
    Min. Response Time (Last)   :           1281 MS
    Avg. Response Time (Last)   :           1373 MS
    Max. Response Time (Last)   :           1578 MS
    Current Outstanding Connects:              0      (   20 Max)
    Current Waitable Connects   :              0      (   20 Max)
    Total Asynchronous Connects :            531      (    1/Sec)
    Total Discarded Connects    :              0      (    0/Sec)
    ########################################################################
    

    確認すべき重要な数値は 1 秒あたりの要求数です。 この場合は、1 秒あたり 14 件の要求を受け取ります。

    注意: JPG ファイルが大きいほど、表示される要求は少なくなります。 マシンがネットワークにバインドされている可能性があります。送信しているデータでネットワークが飽和しているため、IIS は要求をこれ以上処理できません。 200-300 KB の範囲内にある JPG ファイルで最高の結果が得られます。

出力キャッシュの追加

著作権メッセージを動的に挿入するコードはかなり低速です。 1 秒あたり 14 件の要求は Web サーバーにとって高速ではありません。 IIS によって性能ははるかに向上します。 行う必要があるのは、JPG 拡張子を含む URL をカーネル モード キャッシュに格納するキャッシュ ポリシーを作成することだけです。 キャッシュ ポリシーを追加する方法を次に示します。

IIS 管理ツールを使用したキャッシュ ポリシーの追加

  1. [管理ツール] に移動し、[インターネット インフォメーション サービス (IIS) マネージャー] を選択します。
  2. 左側にあるツリー ビューを使用して、"pictures" アプリケーションに移動します。
  3. [出力キャッシュ規則] メニュー項目を選択します。
  4. [操作] メニューの [追加...] をクリックします。
  5. [ファイル拡張子] として JPG をキャッシュに追加します。
  6. [キャッシュされたファイルの監視] セクションで [時間間隔] を選択し、時間間隔として「00:00:10」と入力します。
  7. [ヘッダー] チェック ボックスをオンにし、「Accept-Language」と入力します。

Note

出力キャッシュのユーザー インターフェイスは、Windows Vista Service Pack 1 より前のバージョンでは使用できません。

コマンド ラインを使用したキャッシュ ポリシーの追加

同じ手順を appcmd ツールで実行するには、次のコマンドを入力します。

%windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures" 
    -section:caching /+profiles.[extension='.jpg',duration='00:00:10',
    policy='CacheForTimePeriod',varyByHeaders='Accept-Language']

パフォーマンス実行を繰り返して、構成設定の何がどのように変更されるかを確認します。

  1. 次のコマンドを実行して、コントローラーを起動します。

    Cd \perftest
    "%programfiles%\IIS Resources\WCAT Controller\wcctl" 
        -c config.cfg -s script.cfg -d distribution.cfg -a localhost
    
  2. 次のようにクライアントを起動します。

    "%programfiles%\IIS Resources\WCAT Client\wcclient.exe" localhost
    

    Note

    これを 64 ビット版の Windows で行うと、WCAT が program files (x86) ディレクトリにインストールされるため、%programfiles(x86)% を使用して WCAT を起動する必要があります。

出力例

########################################################################
WCAT Performance Statistics_________________________________
Server                      :      localhost      ()
#Transactions               :              3      (HTTP/1.1)
Total Async Sockets         :             20      (5 WCAT Pool Threads)
Total Elapsed Time          :             30 Secs (0 Hrs,0 Mins,30 Secs)
Current Connections         :             19
Total Connection Attempts   :          13020      (  434/Sec)
Total Connect Errors        :              0      (    0/Sec)
Total Success Connections   :          13019      (  433/Sec)
Total Consec. Connect Errors:              0      (    0/Sec)
Total Bytes                 :      958045737      (31186 KB/Sec)
Total Bytes Written         :         963406      (   31 KB/Sec)
Total Bytes Read            :      957082331      (31155 KB/Sec)
Total Requests              :          13019      (  433/Sec)
Total Responses             :          13019      (  433/Sec)
Total Socket Reads          :         258283      ( 8609/Sec)
Total Socket Writes         :          13019      (  433/Sec)
Total Parse Errors          :              0      (    0/Sec)
Total Socket Errors         :              0      (    0/Sec)
Total I/O Errors            :              0      (    0/Sec)
Total Internal Errors       :              0      (    0/Sec)
Total Time Outs             :              0      (    0/Sec)
Total 200 OK                :          13019      (  433/Sec)
Total 30X Redirect          :              0      (    0/Sec)
Total 304 Not Modified      :              0      (    0/Sec)
Total 404 Not Found         :              0      (    0/Sec)
Total 500 Server Error      :              0      (    0/Sec)
Total Bad Status            :              0      (    0/Sec)
Min. Connect Time           :              0 MS
Avg. Connect Time           :              0 MS
Max. Connect Time           :             63 MS
Min. Resp Time (1st Byte)   :              0 MS
Avg. Resp Time (1st Byte)   :             33 MS
Max. Resp Time (1st Byte)   :            125 MS
Min. Response Time (Last)   :              0 MS
Avg. Response Time (Last)   :             45 MS
Max. Response Time (Last)   :            141 MS
Current Outstanding Connects:              0      (   20 Max)
Current Waitable Connects   :              0      (   20 Max)
Total Asynchronous Connects :          14093      (  147/Sec)
Total Discarded Connects    :              0      (    0/Sec)
########################################################################

出力キャッシュの高度なトピック

パフォーマンス カウンター

出力キャッシュ内のパフォーマンスを確認するには、[信頼性とパフォーマンス モニター] の出力キャッシュ カウンターを参照します。 多くの興味深いカウンターがあります。 [信頼性とパフォーマンス モニター] を出力キャッシュと共に使用する方法の 1 つの例を次に示します。

  1. Windows Server 2008 では、[スタート] メニューから PERFMON を起動します。 [管理ツール] に移動し、[信頼性とパフォーマンス モニター] をクリックします。 Vista では、[コントロール パネル] で [管理ツール] を見つけます。
  2. 右側にあるツリー ビューの [パフォーマンス モニター] を選択し、ツール バーの大きな [+] 記号をクリックします。
  3. [Web サービス キャッシュ] カウンターに移動し、それをクリックして開きます。
  4. "Total URIs Cached" カウンターを追加します。
  5. WCAT テストを再実行します。

パフォーマンス テスト中に要求する項目の数に応じて、キャッシュされた URI の数が増えることがわかります。

IIS カーネル モードのキャッシュ規則

IIS 出力キャッシュでは、2 つのキャッシュ ポリシーがサポートされています。 通常の出力キャッシュ ポリシーでは、IIS ワーカー プロセスに存在するキャッシュを利用します。 もう一方のキャッシュ ポリシーは、キャッシュがカーネル モード ドライバーである HTTP.SYS に存在するカーネル モード キャッシュ ポリシーです。

カーネル モードでコンテンツをキャッシュすると、Web サイトの速度が向上します。 pictures アプリケーションの構成を、カーネル モード キャッシュを使用するように変更します。 現在の構成 (%systemdrive%\inetpub\wwwroot\pictures\web.config) がどのようになっているかを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="true" />
        <caching>
            <profiles>
                <add extension=".jpg" policy="CacheForTimePeriod" 
                duration="00:00:10" varyByHeaders="Accept-Language" />
            </profiles>
        </caching>                  
  </system.webServer>
</configuration>

では、これを、カーネル モードのキャッシュを使用するように変更します。

  1. %systemdrive%\inetpub\wwwroot\pictures\web.configを開きます。

  2. 設定を変更します。

    <caching>
        <profiles>
            <add extension=".jpg" policy="CacheForTimePeriod" 
                    duration="00:00:10" varyByHeaders="Accept-Language" />
        </profiles>
    </caching>
    

    次のように変更します。

    <caching>
        <profiles>
                <add extension=".jpg" kernelCachePolicy="CacheForTimePeriod" 
            duration="00:00:10" />
            </profiles>
    </caching>
    

varyByHeaders 属性が使用されなくなったことがわかります。 これは、ユーザー モード出力キャッシュでサポートされている機能の一部が kernelModeCache ではサポートされないためです。

カーネル モード出力キャッシュの制限事項

ユーザー モードとカーネル モードの出力キャッシュの間には 2 つの大きな違いがあります。

  • カーネル モード出力キャッシュでは、ユーザー モードで実行する必要があるモジュールと機能 (認証や認可など) がサポートされません。 例: 基本認証や Windows 認証などの認証スキームが有効になっている場合、キャッシュ ポリシーは機能しません。 コンテンツは処理されますが、キャッシュされません。 コンテンツがキャッシュされるかどうかを見つける方法については、「キャッシュをトラブルシューティングする」を参照してください。 カーネル モードで応答がキャッシュされない場合がある理由の詳細については、このサポート技術情報の記事を参照してください。
  • カーネル モード出力キャッシュでは、varyByHeaders 属性がサポートされますが、varyByQuerystring はサポートされません。

キャッシュをトラブルシューティングする

失敗した要求イベントのバッファリング (FREB) は、要求がキャッシュされるかどうかを見つけるための最適な方法です。 FREB により、何かがキャッシュされない理由がわかります。 FREB ログのサンプルを次に示します。 この場合は、HTTPSYS_CACHEABLE イベントにより、カーネル モード キャッシュが有効でないために要求がキャッシュされないことがわかります。

FREB を操作する方法の詳細については、IIS 7 でのトレースを使用した失敗した要求のトラブルシューティングに関するページを参照してください。

カーネル モードでどのコンテンツがキャッシュされるかを見つけるには、次のコマンドを使用します。

netsh http show cachestate

キャッシュの複雑さ

出力キャッシュを有効にした場合でも、IIS によって要求はすぐにはキャッシュされません。 IIS により要求が "キャッシュする価値がある" と見なされるには、数回要求する必要があります。 キャッシュする価値は、この MSDN の記事で説明されている ServerRuntime セクションを使用して構成できます。

キャッシュする価値を決定する 2 つのプロパティが frequentHitTimePeriod と frequentHitThreshold です。 要求は、キャッシュ可能な URL に対する <frequentHitThreshold> 件を超える要求が <frequentHitTimePeriod> 以内に到着した場合にのみキャッシュされます。

frequentHitTimePeriod の既定の設定は 10 秒です。

frequentHitThreshold の既定の設定は 2 です。

上の例では、拡張子 JPG を持つすべてのファイルを出力キャッシュに格納します。 場合によっては、選択を厳しくして特定のドキュメントのみを出力キャッシュに格納したいこともあるため、これが必ずしも機能するとは限りません。 これを最も頻繁に要求されるページである既定のドキュメントについて行う方法を次に示します。

  1. %systemdrive%\inetpub\wwwroot\pictures ディレクトリ内に default.aspx という名前のファイルを作成し、次のコードを追加します。

    <%=DateTime.Now%>
    
  2. [管理ツール] に移動し、[インターネット インフォメーション サービス (IIS) マネージャー] を選択します。

  3. 左側にあるツリー ビューを使用して、"pictures" アプリケーションに移動します。

  4. ページの下部にある [コンテンツ ビュー] をクリックします。

  5. 既定のドキュメント (たとえば、default.aspx ページ) を選択します。

  6. 右側にある [操作] メニューの [機能ビューに切り替え] をクリックします。 構成するすべての設定が既定のドキュメントにのみ適用されるようになります。

  7. [出力キャッシュ規則] 設定を開きます。

  8. ファイル拡張子として ".aspx" を追加します。

  9. [カーネル モードのキャッシュ] を選択すると、[時間間隔] を選択し、[キャッシュされたファイルの監視] を有効にして、時間間隔として「00:00:30」と入力できるようになります。

  10. "Internet Explorer" を使用して http://localhost/pictures を参照します。 常にページを更新する (ブラウザー キャッシュから取得されないように Ctrl + F5 キーを押す) ことによって、時間が 30 秒間変更されないことがわかります。

まとめ

半動的コンテンツに対して IIS 出力キャッシュ機能を使用することにより Web サイトを改善できます。 パフォーマンスとスループット容量が大幅に向上していることを確認できます。 簡単な構成変更で十分にこの機能を利用できます。