2012-04-08 6 views
0

私はいくつかのニッキーニコをやっています。バンドルされたミニファイルのCSSファイルが圧縮されていないことを示すFirebugについて心配しています.gzipヘッダーを追加するためにアクションフィルタを使用しています。それは、ミニ/バンドルされたCSSとjsファイルではうまくいかないのはなぜですか?私はのApplication_Start(に登録)ので、私は、各コントローラ上でそれを行う必要はありませんFirebugページスピード警告:圧縮を有効にします

public class CompressFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      HttpRequestBase request = filterContext.HttpContext.Request; 

      string acceptEncoding = request.Headers["Accept-Encoding"]; 

      if (string.IsNullOrEmpty(acceptEncoding)) return; 

      acceptEncoding = acceptEncoding.ToUpperInvariant(); 

      HttpResponseBase response = filterContext.HttpContext.Response; 

      if (acceptEncoding.Contains("GZIP")) 
      { 
       response.AppendHeader("Content-encoding", "gzip"); 
       response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 
      } 
      else if (acceptEncoding.Contains("DEFLATE")) 
      { 
       response.AppendHeader("Content-encoding", "deflate"); 
       response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); 
      } 

      response.AppendHeader("Connection", "keep-alive"); 
     } 
    } 

GlobalFilters.Filters.Add(new CompressFilter()); 

RegisterGlobalFilters(GlobalFilters.Filters); 

そして私も設定でこれを持っている。ここ

はフィルタです。

<urlCompression doStaticCompression="true" doDynamicCompression="true" /> 

ヘッダは正しいですが、CSSとjsでは何もありません。どうすれば修正できますか?

答えて

0

IIS 7圧縮を使用しない場合、そのCompressFilterの必要はありません。urlCompression設定で十分です。あなたのCSSはトラフScriptResourceHandlerを提供している場合、あなたは(この例では、キャッシングができるようになっていることに注意してください)また、そのための圧縮を設定する必要があります。

<configuration> 
    ... 
    <system.web.extensions> 
    <scripting> 
     <scriptResourceHandler enableCompression="true" enableCaching="true"/> 
    </scripting> 
    </system.web.extensions> 
    ... 
</configuration> 

そして、ちょうどノートを、ISAプロキシサーバーのストリップは受け入れ-encodingをリクエストヘッダからgzip圧縮しますISAはコンテンツを悪意のあるデータでスキャンできるように、デフォルトでは他のプロキシ/ファイアウォールソフトウェアも同じことをしています。

+0

私はあなたのコードを試しましたが、残念ながらうまくいきません。多分スクリプトとCSSがmvc4によって縮小/バンドルされているからです。 – formatc

+0

申し訳ありませんが、私はMVC 4タグを見落としました。多分、私はMVC 4を使用しませんでした。 –

関連する問題