Antworten:
Sie können die GZIP-Komprimierung vollständig in Ihrer Web.config
Datei aktivieren . Dies ist besonders nützlich, wenn Sie Shared Hosting verwenden und IIS nicht direkt konfigurieren können oder wenn Sie möchten, dass Ihre Konfiguration zwischen allen Umgebungen übertragen wird, auf die Sie abzielen.
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
Verwenden Sie die Entwicklertools in Chrome oder Firebug für Firefox, um zu testen, ob die Komprimierung funktioniert oder nicht, und stellen Sie sicher, dass der HTTP-Antwortheader festgelegt ist:
Content-Encoding: gzip
Beachten Sie, dass dieser Header nicht vorhanden ist, wenn der Antwortcode 304 (nicht geändert) lautet. Wenn dies der Fall ist, führen Sie eine vollständige Aktualisierung durch (halten Sie die Umschalt- oder Steuertaste gedrückt, während Sie die Aktualisierungstaste drücken) und überprüfen Sie sie erneut.
.js
nicht wahr? Auch versucht hinzuzufügen application/x-javascript
. Bei Verwendung zusammen mit Tomcat wurde daher der directory
Parameter entfernt.
Sie müssen die Funktion in der Systemsteuerung für Windows-Funktionen aktivieren:
Globales Gzip in HttpModule
Wenn Sie keinen Zugriff auf die endgültige IIS-Instanz haben (Shared Hosting ...), können Sie ein HttpModule erstellen, das diesen Code zu jedem HttpApplication.Begin_Request-Ereignis hinzufügt:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Testen
Ein dickes Lob, ohne Test wird keine Lösung gefunden. Ich verwende gerne das Firefox-Plugin " Liveheaders ", das alle Informationen zu jeder http-Nachricht zwischen Browser und Server anzeigt , einschließlich Komprimierung und Dateigröße (die Sie mit der Dateigröße auf dem Server vergleichen können).
Ich musste die Funktion nur in Windows-Funktionen hinzufügen, wie Charlie erwähnt hat. Für Leute, die sie unter Windows 10 oder Server 2012+ nicht finden können, finden Sie sie wie folgt. Ich kämpfte ein bisschen
Wenn Sie auch versuchen, dynamische Seiten (wie aspx) zu gzipen, und dies nicht funktioniert, liegt dies wahrscheinlich daran, dass die Option nicht aktiviert ist (Sie müssen das Modul zur dynamischen Inhaltskomprimierung mithilfe der Windows-Funktionen installieren):
http://support.esri.com/de/knowledgebase/techarticles/detail/38616
Eine weitere einfache Möglichkeit zum Testen ohne Installation ist auch nicht von der IIS-Version abhängig. Fügen Sie Ihre URL in diesen Link ein - SEO Checkup
So fügen Sie web.config hinzu: http://www.iis.net/configreference/system.webserver/httpcompression
Probieren Sie Firefox mit installierten Firebug-Addons aus. Ich benutze es; tolles Tool für Webentwickler.
Ich habe die Gzip-Komprimierung auch in meinem IIS7 mit web.config aktiviert.