Ich bin also ein bisschen wie ein IIS7 n00b, aber ich habe die meisten alten IIS-Systeme verwendet, die auf 3 zurückgehen. Ich versuche, die dynamische Komprimierung zu aktivieren, und sie funktioniert hauptsächlich. Es funktioniert nicht für meine ADO.Net Data Service (Astoria) -Anfragen, gestapelt oder nicht.
Ich fand die FREB-Ablaufverfolgung (Failed Request), die sehr hilfreich war. Und was ich auf ungeschlagenen Anfragen sehe, ist Reason Code 12, NO_MATCHING_CONTENT_TYPE
. OK, ich habe nicht den passenden MIME-Typ angegeben, das ist einfach.
Nur dass ich das in meiner web.config habe (was ich für richtig halte, aber vielleicht nicht).
<httpCompression dynamicCompressionDisableCpuUsage="100"
dynamicCompressionEnableCpuUsage="100"
noCompressionForHttp10="false"
noCompressionForProxies="false"
noCompressionForRange="false"
sendCacheHeaders="true"
staticCompressionDisableCpuUsage="100"
staticCompressionEnableCpuUsage="100">
<dynamicTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</dynamicTypes>
<staticTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
doStaticCompression="true"
dynamicCompressionBeforeCache="false" />
Jetzt denke ich, dass dies bedeutet, dass jede Anfrage komprimiert werden sollte, die den Accept: Gzip-Header enthält. Ich würde gerne wissen, was andere hier denken könnten.
Meine Geigenspur:
GET /SecurityDataService.svc/GetCurrentAccount HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;Silverlight
Accept: application/atom+xml,application/xml
maxdataserviceversion: 1.0;Silverlight
Referer: http://sdev03/apptestpage.aspx
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: sdev03
Connection: Keep-Alive
Cookie: .ASPXAUTH=<snip>
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
DataServiceVersion: 1.0;
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 22 Mar 2010 22:29:06 GMT
Content-Length: 2726
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
*** <snip> removed ***
quelle
"C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
Und noch einmal: Nachdem diese Änderungen vorgenommen wurden, werden sie nur im Editor angezeigt. Notepad ++ (sowie Visual Studio 2010 Editor !!)Antworten:
OK, es stellt sich heraus, dass Sie dies nicht in der web.config konfigurieren können, sondern nur in der appHost.config. Ich nahm an, dass in den Dokumenten appHost.config angegeben war, aber ich hatte angenommen, dass es sich um eine Spezifikation eines allgemeinen Konzepts handelt, nicht um den einzigen zulässigen Konfigurationsort.
quelle
web.config
Überschreiben von Komprimierungseinstellungen, weshalb Sie die ändern müssenapplicationHost.config
. Anstatt die Komprimierungseinstellungen dort zu ändern, können Sie stattdessen einfach Überschreibungen zulassen, und Sie sind wieder im Geschäft.Peter, danke für den Hinweis - wir haben auch diese Einstellung gefunden
im
<httpCompression>
AbschnittapplicationHost.config
behoben dies.Wir mussten auch die Codierung aufgrund eines Fehlers im Komprimierungscode angeben :
Hier ist der relevante Abschnitt vollständig
quelle
Bei einer Neuinstallation hatte mein
applicationHost.config
(in%windir%\system32\inetsrv\config
) die folgende Einstellung:... sowie einen Standardsatz von MIME-Typen zum Komprimieren, der leider nicht JSON und andere Datentypen enthält, die gute Komprimierungskandidaten wären.
Umschalten auf:
Aktiviert die Konfiguration des
httpCompression
Tags unter demsystem.webServer
Tag in myweb.config
.Ich habe dies bestätigt, indem ich den
httpCompression
Abschnitt vonapplicationHost.config
auf: gesetzt habe.... und jetzt kann ich alle MIME-Typen einstellen, die ich tatsächlich in der komprimieren möchte
web.config
.quelle
httpCompression
Elementeweb.config
in neueren Versionen von IIS auf der Ebene funktionieren, oder ist dies unmöglich? Docs sind ein Albtraum - es scheint nicht zu sagen, was der Deal irgendwo offiziell ist.Verwenden Sie die folgenden Befehle, um fehlende Mimetypen aus Powershell hinzuzufügen:
Beachten Sie, dass die Reihenfolge der mimeTypes wichtig ist, da IIS die erste Übereinstimmung zu übernehmen scheint. Dies bedeutet, dass mimeTypes mit Platzhaltern (*) unter mimeTypes ohne Platzhalter liegen sollten. Stellen Sie daher sicher, dass der mimeType
*/*
unten befindet, da ein Eintrag darunter nicht verwendet wirdBearbeiten:
IIS ist zum Kotzen, daher ist es am besten, einfach die staticTypes zu löschen und alles in der richtigen Reihenfolge wieder hinzuzufügen:
quelle