2016-07-07 6 views
7

In Firebug der Request-Header den folgenden Eintrag hat:
Accept-Encoding: gzip, deflateII-Anwendung fehlt Content-Encoding - gzip in -Antwortheaders

Aber es gibt keine:
Content-Encoding: gzip
In der Antwort-Header.

Unabhängig von allem, was ich versucht habe, nach einer Reihe von Antworten auf SO und anderen Seiten scheint nichts zu funktionieren! Weder statische noch dynamische Dateien werden komprimiert, oder zumindest gibt es keine Inhaltscodierung - der gzip-Wert kommt im Antwortheader zurück.

Hier ist ein Beispiel meiner web.config Einstellungen:

<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" /> 
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="150" staticCompressionIgnoreHitFrequency="true"> 
    <remove name="gzip" /> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="8" dynamicCompressionLevel="8" /> 
</httpCompression> 

ich die Trefferfrequenz
staticCompressionIgnoreHitFrequency="true "

ich bestätigt ignoriert habe habe, dass II in der Tat ist es, die Dateien komprimiert die ich
C: in sehen \ inetpub \ temp \ Temporary Compressed Files

Als sp IIS ecified hier: set up gzip in IIS 8 windows 8
Ich habe dafür gesorgt, dass statische und dynamische Kompression in Windows-Funktionen aktiviert ist> Internetinformationsdienste> WWW Dienste> Funktionen Leistung

ich dieser Kerl auch Ansatz versucht haben:
IIS 7.5 Compression creates compressed file but returns the non-compressed one


Edit 1:
IIS-Version ist 10, aber ich habe auch dies auf IIS versucht 8.5


Edit 2:
Ich habe jetzt auch versucht, verschiedene Konfigurationsdateien unter diesem Link: https://github.com/h5bp/server-configs-iis/ das, was wie einige 'best practice' web.config-Dateien sucht, bietet.
gelöst Nicht


bearbeiten 3:
Basierend auf @ Nkosi der Eingang I eine völlig neue Asp.net MVC-Anwendung erstellt und konfiguriert es, alle diese Optionen habe ich versucht. Hier ist der Roh-Header, die ich von Fiedler bekam:

HTTP/1.1 200 OK 
Transfer-Encoding: chunked 
Content-Type: text/javascript; charset=UTF-8 
Expires: Wed, 20 Jul 2016 18:22:47 GMT 
Last-Modified: Wed, 20 Jul 2016 18:22:47 GMT 
Server: Microsoft-HTTPAPI/2.0 
Date: Wed, 20 Jul 2016 18:22:47 GMT 

Wie Sie sehen können, keine Content-Encoding: gzip
gelöst Nicht


bearbeiten 4:
I habe diesen Ansatz des Hinzufügens von Code zu dem BeginRequest-Ereignis in dem Global.asax-Abschnitt versucht: https://stackoverflow.com/a/27185575/392591
Nicht


bearbeiten gelöst 5:
So einfach habe ich versucht, so dass auf SO auf der Grundlage dieser Antwort Tracing: https://stackoverflow.com/a/33182525/392591
keine Fehler, aber ich habe bemerkt, zuunterst der Trace-Datei dort ist ein Abschnitt GENERAL_RESPONSE_HEADERS genannt und hier ist das, was es bietet:

Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Server: Microsoft-IIS/10.0 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-Powered-By: My Little Pony 
X-UA-Compatible: IE=Edge,chrome=1 

und das ist für jede statische Typ-Datei.
Allerdings fand ich in der Trace-Datei den folgenden gerade:

8. STATIC_COMPRESSION_START 08:04:03.552 
9. STATIC_COMPRESSION_NOT_SUCCESS Reason="NOT_FREQUENTLY_HIT" 08:04:03.552 
10. STATIC_COMPRESSION_END 08:04:03.552 

Compression Erfolg nicht aus dem Grunde nicht häufig Hit ... Odd weil ich auf jeden Fall die Option auf true gesetzt Trefferfrequenz ignorieren!

Also ging ich IIS-Manager nur in und auf dem Server habe ich den Hit Ignorieren Frequenz auf true (dh applicationHost.config) und die Trace-Datei Ausgabe wie folgt geändert:

8. STATIC_COMPRESSION_START 08:19:17.489 
9. STATIC_COMPRESSION_SUCCESS 08:19:17.489 
10. STATIC_COMPRESSION_END 08:19:17.489 

ich zurück ging und es ausgeschaltet in der applicationHost.config und es ging zurück zu einer statischen Kompression nicht erfolgreich, so dass dies definitiv einen Unterschied macht. Wenn ich jedoch FireBug ansehe, liefert es immer noch die unkomprimierte Datei und keinen Response-Header für GZIP Content Encoding. Ein weiteres interessantes Bit, das ich in der fehlgeschlagenen Anforderungsverfolgung bemerkt habe, sind die beiden letzten GENERAL_FLUSH_RESPONSE_END und GENERAL_REQUEST_END, von denen meine Bootstrap.css-Datei 17903 Bytes, ungefähr 18kb, gesendet hat, die der komprimierten Version der Datei entsprechen Mein IIS Ordner für temporäre komprimierte Dateien. Also wird die Datei physisch komprimiert und entsprechend den Failed-Request-Traces sendet sie den richtigen Inhalt ... aber dann nimmt der Browser stattdessen die volle 117kb-Datei auf?
Nicht


+0

Ich verwende IIS10 und meine web.config hat ''. Wenn ich Anfragen von einem Browser (Firefox, IE11, Edge, Google Chrome) an eine einfache MVC-Anwendung teste. Die Anfragen haben alle 'Accept-Encoding: gzip, deflate' und die Antworten geben' Content-Encoding: gzip' zurück. – Nkosi

+0

Siehe [this] (http://stackoverflow.com/questions/702124/enable-iis7-gzip). Vielleicht müssen Sie die Gzip-Funktion auf dem Server aktivieren. –

+0

@LucasSegers - Die Funktion ist definitiv aktiviert. – Jacques

Antwort

1

ich IIS10 und meine web.config hat

<system.webServer> 
    <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" /> 
    <!-- other config removed for brevity --> 
</system.webServer> 

Wenn ich Anfragen tun Test von einem Browser (Firefox, IE11, Rand, Google Chrome), um eine bin mit gelöst einfache MVC-Anwendung.

Die Anfragen haben alle Accept-Encoding: gzip, deflate und die Antworten geben Content-Encoding:gzip zurück.

Ich habe es sogar mit Fiddler getestet.Composing die Anforderung manuell

GET http://localhost/MyWebApplication HTTP/1.1 
User-Agent: Fiddler 
Host: localhost 
Accept-Encoding: gzip, deflate 

und das gleiche Ergebnis

HTTP/1.1 200 OK 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Server: Microsoft-IIS/10.0 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Mon, 18 Jul 2016 15:26:06 GMT 
Content-Length: 3826 

... 

Css, Js erhalten und alle anderen textbasierten Dateien komprimiert werden.

Möglicherweise müssen Sie Ihre Konfiguration erneut überprüfen, um sicherzustellen, dass die Komprimierung in IIS und in Ihrer Datei web.config richtig konfiguriert ist.

UPDATE:

Ich habe bemerkt, dass die Bilder nicht

Anfrage

GET http://localhost/MyWebApplication/Images/Logo_small.png HTTP/1.1 
User-Agent: Fiddler 
Host: localhost 
Accept-Encoding: gzip, deflate 

Antwort

HTTP/1.1 200 OK 
Cache-Control: max-age=604800 
Content-Type: image/png 
Last-Modified: Fri, 27 Nov 2015 03:15:22 GMT 
Accept-Ranges: bytes 
ETag: "c9d1fdd9c128d11:0" 
Server: Microsoft-IIS/10.0 
X-Powered-By: ASP.NET 
Date: Mon, 18 Jul 2016 15:33:02 GMT 
Content-Length: 2970 

... 

und nach einigen Google-Fu, dass die Bilder herausgefunden komprimiert wurden sind normalerweise bereits komprimiert, also wurde gzip nicht angewendet.

FULL system.webServer von web.config

<system.webServer> 
    <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" /> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
     <clear /> 
     <error statusCode="404" responseMode="ExecuteURL" path="/NotFound" /> 
    </httpErrors> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <staticContent> 
     <remove fileExtension=".woff" /> 
     <remove fileExtension=".woff2" /> 
     <mimeMap fileExtension=".woff" mimeType="application/font-woff" /> 
     <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" /> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 
    </system.webServer> 
+0

Ich habe meine Frage aktualisiert, siehe Bearbeiten 3. Welchen Code haben Sie aus Ihrem Beispiel entfernt, alles, was meine Ergebnisse ändern könnte? – Jacques

+0

@Jacques, der Rest der Config ist 'httpErrors, Handler, staticContent'. Ich habe es minimal gehalten. Ich werde es in ein Update aufnehmen. – Nkosi

+0

okay, ich glaube nicht, dass dies Auswirkungen auf dieses Problem hätte. Ich habe ein weiteres Update mit einer anderen Lösung hinzugefügt, die ich gerade versucht habe, immer noch keine Freude. – Jacques

0

Ich habe ein ähnliches Problem mit einem bereits konfigurierten IIS hatte.

Nach vielen Versuchen fanden wir heraus, dass das Problem ein Fehler in der GZIP-Installation war, das Problem wurde einfach durch Neuinstallation der Funktion in der Systemsteuerung gelöst.