MVC 3でgzip圧縮を有効にする方法を知っている人はいますか? IIS7を使用しています。
Google Chrome Auditの結果:
- Gzip圧縮を有効にします(4)
- 以下のリソースをgzipで圧縮すると、転送サイズが約3分の2(約92.23KB)削減される可能性があります。
- / mydomain /で〜1.53KB節約できます
- jquery-1.4.4.min.jsは〜51.35KBを節約できます
- Cufon.jsは〜11.89KBを節約できます
- Futura.jsは〜27.46KBを節約できます
web.config
ファイルを使用して、次のように圧縮を構成できます。
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
この構成要素のドキュメントは、 iis.net/ConfigReference にあります。これは次と同等です:
注:(コメントで指摘されているように)Http Dynamic Compressionがインストールされていることを確認する必要があります。そうでない場合、doDynamicCompression="true"
を設定しても効果がありません。これを行う最も簡単な方法は次のとおりです。
optionalfeatures
」と入力します(これは[Windowsの機能の有効化または無効化]ウィンドウに到達する最も簡単な方法です)むしろそうすれば、コードでこれを行うことができます。すべてのコントロールが継承するベースコントローラーを作成し、以下のこの属性で装飾します。
public class CompressAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(encodingsAccepted)) return;
encodingsAccepted = encodingsAccepted.ToLowerInvariant();
var response = filterContext.HttpContext.Response;
if (encodingsAccepted.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
else if (encodingsAccepted.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
}
}
圧縮は、サーバーレベルで有効/無効になります。 iis管理コンソールのIIS圧縮モジュールを参照してください。
Microsoftサイトからの IISの手順 です。