2012-04-08 7 views
0

Ich mache einige pingelige seo und ich bin besorgt über Firebug zeigt, dass meine gebündelte und Minifed CSS-Dateien nicht komprimiert sind, verwende ich Action-Filter, um Gzip-Header anhängen, aber ich weiß es nicht Warum funktioniert es nicht für verkleinerte/gebündelte CSS- und JS-Dateien?Firebug Seite Geschwindigkeit Warnung: Aktivieren Sie die Komprimierung

Hier Filter:

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"); 
     } 
    } 

ich es in Application_Start registrieren() so habe ich es nicht auf jedem Controller zu tun:

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

RegisterGlobalFilters(GlobalFilters.Filters); 

Und ich dies auch in config:

Header sind korrekt für Ansichten, aber nichts für CSS und JS .. Wie kann ich das beheben?

Antwort

0

Wenn Sie keine IIS 7-Komprimierung verwenden möchten, ist dieser CompressFilter nicht erforderlich, die URLCompression-Einstellungen sollten ausreichen. Wenn Ihr css Trog ScriptResourceHandler serviert werden, dann sollten Sie die Komprimierung für das Set auch (beachten Sie, dass in diesem Beispiel Caching aktiviert):

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

Und nur eine Notiz, ISA Proxy-Server Streifen gzip von Accept-Encoding-Request-Header Standardmäßig kann der ISA den Inhalt auf bösartige Daten überprüfen, möglicherweise tun andere Proxy/Firewall-Software das gleiche.

+0

Nun, ich habe versucht Ihren Code, aber leider scheint es nicht zu funktionieren, vielleicht liegt es daran, dass Skript und CSS wird von mvc4 minimiert/gebündelt. – formatc

+0

Sorry, ich habe das MVC 4-Tag übersehen, vielleicht habe ich MVC 4 nicht benutzt –

Verwandte Themen