回答:
Web.config
ファイルでGZIP圧縮を完全に有効にすることができます。これは、共有ホスティングを使用していて、IISを直接構成できない場合、またはターゲットとするすべての環境間で構成を実行したい場合に特に便利です。
<system.webServer>
<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>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
圧縮が機能しているかどうかをテストするには、ChromeまたはFirefoxのFirebugの開発者ツールを使用して、HTTP応答ヘッダーが設定されていることを確認します。
Content-Encoding: gzip
応答コードが304(Not Modified)の場合、このヘッダーは存在しないことに注意してください。その場合は、完全に更新し(ShiftキーまたはControlキーを押しながら更新ボタンを押す)、もう一度確認してください。
.js
ません。また、を追加してみましたapplication/x-javascript
。tomcatと一緒に使用することで、directory
パラメーターが削除されました。
HttpModuleのグローバルGzip
最終的なIISインスタンス(共有ホスティング)にアクセスできない場合は、このコードをすべてのHttpApplication.Begin_Requestイベントに追加するHttpModuleを作成できます。
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
テスト中
称賛、テストなしで解決策はありません。私は、Firefoxプラグイン「Liveheaders」を使用したいのですが、圧縮、ファイルサイズ(サーバー上のファイルサイズと比較できます)を含む、ブラウザーとサーバー間のすべてのhttpメッセージに関するすべての情報を表示します。
動的ページ(aspxなど)もgzipしようとして機能しない場合は、おそらくオプションが有効になっていないためです(Windowsの機能を使用して動的コンテンツ圧縮モジュールをインストールする必要があります)。
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
FirebugアドオンがインストールされたFirefoxを試してください。私はそれを使っています。Web開発者にとって素晴らしいツールです。
IIS7でweb.configを使用してGzip圧縮も有効にしています。