Ich versuche, meine IIS7-Komprimierungseinstellungen in meiner Datei web.config zu konfigurieren. Ich versuche, HTTP 1.0-Anforderungen als gzip zu aktivieren.
MSDN hat hier alle Infos dazu .
Ist es möglich, diese Konfigurationsinformationen in der Datei web.config meiner eigenen Website zu haben? Oder muss ich es auf Anwendungsebene einstellen? Derzeit habe ich diesen Code in meiner web.config ...
<system.webServer>
<urlCompression
doDynamicCompression="true"
dynamicCompressionBeforeCache="true" />
<httpCompression
cacheControlHeader="max-age=86400"
noCompressionForHttp10="False"
noCompressionForProxies="False"
sendCacheHeaders="true" />
... other stuff snipped ...
</system.webServer>
Es funktioniert nicht :( HTTP 1.1-Anforderungen werden komprimiert, nur nicht 1.0.
Diese MSDN-Seite oben besagt, dass sie verwendet werden kann in:
- Machine.config
- ApplicationHost.config
- Stammanwendung Web.config
- Anwendung Web.config
- Verzeichnis Web.config
Können wir diese Einstellungen also pro Website programmgesteuert in einer web.config-Datei festlegen? (Dies ist eine Application Web.config-Datei ...) Was habe ich falsch gemacht?
Prost :)
EDIT: Ich wurde gefragt, woher ich weiß, dass HTTP1.0 nicht komprimiert wird. Ich verwende die Regeln für die Ablaufverfolgung fehlgeschlagener Anforderungen, die Folgendes melden: -
DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
Reason: 3
Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
quelle
appcmd
Einstellungen auf Anwendungsebene festlegen (was wahrscheinlich viel einfacher ist).Nach einigem Nachforschen ist es auf Anwendungsebene standardmäßig "gesperrt". Als solches muss es "entsperrt" werden. Dies kann über die Befehlszeile oder über die (zusätzlichen Download-) iis7-Verwaltungstools erreicht werden.
z.B.
appcmd set config -section:urlCompression /doDynamicCompression:true
Refrences:
quelle
Wie testen Sie, ob HTTP1.0-Anforderungen nicht komprimiert werden? Könnte es sein, dass der von Ihnen verwendete Client dem Server nicht mitteilt, dass er eine komprimierte Antwort akzeptieren kann?
Wenn Sie die vom Client gesendeten Header sehen können (vom Testclient selbst dargestellt, mit Firebug oder ähnlichem, wenn Sie in Firefox oder IEHTTPHeaders testen, wenn Sie in IE testen, oder indem Sie den Datenverkehr mit einem externen Tool abhören), sollten Sie dies tun so etwas sehen
irgendwo da drin. Wenn der Client den Server nicht darüber informiert, dass er eine komprimierte Antwort akzeptieren kann, sendet der Server keine, unabhängig davon, welche anderen Einstellungen Sie auf der Serverseite haben.
Ein weiteres Problem könnte sein, wenn Sie über einen Proxyserver testen, der sich als solcher identifiziert hat. In diesem Fall hat die Einstellung noCompressionForProxies möglicherweise Vorrang und blockiert die Möglichkeit einer komprimierten Antwort.
Beachten Sie, dass einige Clients und Proxys, die HTTP1.0-Anforderungen senden (normalerweise ältere Software), eine komprimierte Antwort nicht korrekt verarbeiten, wenn sie eine erhalten. Wenn Sie also die Komprimierung für Antworten auf HTTP1.0-Anforderungen aktivieren, stellen Sie sicher, dass Sie dies tun Testen Sie Ihre Site / Anwendung in der gesamten Client / Proxy-Software, die Besucher / Benutzer verwenden sollen. Dies ist weniger problematisch, wenn Sie garantieren können, dass Ihre Zielgruppe bestimmte Software verwendet (wenn die App beispielsweise nur für ein internes Unternehmensnetzwerk bestimmt ist). Andernfalls müssen viele Kombinationen getestet werden, weshalb die meisten Server die Komprimierung deaktivieren 1.0 Anfragen vollständig.
quelle