2016-07-29 31 views
0

Ich habe kürzlich versucht, WebMarkupMin, eine Laufzeit-HTML-Minification-Bibliothek, in meine Website (C#, IIS 8, MVC 4) zu integrieren. Wir haben die IIS-Komprimierung aktiviert. Ich habe festgestellt, dass IIS den Aktionsfilter-Ausgabestream tatsächlich komprimiert, dh wenn ich versuche, mein HTML in einem Aktionsfilter zu minimieren, versuche ich, bereits komprimierten Inhalt zu minimieren.An welchem ​​Punkt im Laufzeitprozess komprimiert IIS die Ausgabe?

Frage: An welchem ​​Punkt im Laufzeitprozess komprimiert IIS Ausgabe? Gibt es eine Möglichkeit, mvc-Aktionsfilter zu verwenden, um HTML-output zu ändern, ohne die IIS-Komprimierung zu deaktivieren?

Antwort

1

Die IIS dynamische Komprimierung für ASP MVC-Ausgabe läuft ziemlich spät in der Pipeline. In meinem Test war es Nr. 315 von 349 Pipeline-Elementen und nach all den asp.net-Modulen lief.

Um die Reihenfolge der ausgeführten Module in der IIS-Pipeline anzuzeigen, richten Sie die Ablaufverfolgung für fehlgeschlagene Anfragen (FREB) für Ihre Site ein und überprüfen Sie die Protokolle.

Ich würde sagen, es gibt keine Möglichkeit in Ihrem MVC-Action-Filter zu sagen, das Komprimierungsmodul nicht zu komprimieren.

Aber man kann Komprimierung off auf ein URL Basis drehen:

In Ihrem Web-Config so etwas wie folgt verwenden:

<location path="my/long/route/"> 
    <system.webServer> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
</location> 

Sie IIS sagen diese URL nur für die dynamische Kompression auszuschalten.

0

Es ist notwendig, assign zu dynamicCompressionBeforeCache ein Wert gleich zu false Attribut:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    … 
    <system.webServer> 
    … 
    <httpCompression …> 
     … 
    </httpCompression> 
    <urlCompression … dynamicCompressionBeforeCache="false" /> 
    … 
    </system.webServer> 
    … 
</configuration>