Por lo tanto, soy un poco un IIS7 n00b, pero he usado la mayoría de los sistemas IIS antiguos desde 3. Estoy tratando de activar la compresión dinámica y está funcionando, principalmente. No funciona para mis solicitudes de ADO.Net Data Service (Astoria), por lotes o no.
Encontré el seguimiento de solicitud fallida (FREB) que fue realmente útil. Y lo que veo en solicitudes no procesadas es Reason Code 12, NO_MATCHING_CONTENT_TYPE
. OK, entonces no tengo especificado el tipo MIME correspondiente, eso es fácil.
Excepto que esto es lo que tengo en mi web.config (que creo que es correcto, pero tal vez no).
<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" />
Ahora creo que esto significa que debería comprimir cualquier solicitud que incluya el encabezado Aceptar: Gzip. Me encantaría saber lo que otros podrían pensar aquí.
Mi rastro de violinista:
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 ***
fuente
"C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
Y nuevamente: después de realizar estos cambios, los verá solo en el bloc de notas. Notepad ++ (¡así como el editor de Visual Studio 2010!)Respuestas:
OK, resulta que no puedes configurar esto en web.config, solo en appHost.config. Supuse que los documentos decían appHost.config, pero supuse que era una especificación de un concepto general, no la única ubicación de configuración permitida.
fuente
web.config
anulaciones de la configuración de compresión, por lo que debe modificar elapplicationHost.config
. Sin embargo, en lugar de cambiar la configuración de compresión allí, solo puede permitir anulaciones y volver a estar en el negocio.Peter, gracias por la pista: también encontramos esa configuración
en la
<httpCompression>
sección deapplicationHost.config
arreglado esto.También tuvimos que especificar la codificación debido a un error en el código de compresión:
Aquí está la sección relevante completa
fuente
Desde una nueva instalación, mi
applicationHost.config
(in%windir%\system32\inetsrv\config
) tenía la siguiente configuración:... así como un conjunto predeterminado de tipos MIME para comprimir que, desafortunadamente, no incluye JSON y otros tipos de datos que serían buenos candidatos para la compresión.
Cambiando eso a:
permite la configuración de la
httpCompression
etiqueta debajo de lasystem.webServer
etiqueta en miweb.config
.Confirmé esto configurando la
httpCompression
sección deapplicationHost.config
:... y ahora puedo configurar todos los tipos MIME que realmente quiero comprimir en
web.config
.fuente
httpCompression
elemento funcione aweb.config
nivel en versiones más nuevas de IIS o es imposible? Los documentos son una pesadilla: no parece decir cuál es el acuerdo oficial en ninguna parte.Para agregar los tipos mime faltantes de powershell, use los siguientes comandos:
Tenga en cuenta que el orden de los mimeTypes es importante, ya que IIS parece tomar la primera coincidencia. Esto significa que mimeTypes con comodines (*) debe estar debajo de mimeTypes sin comodines. Por lo tanto, asegúrese de que el mimeType
*/*
esté en la parte inferior, ya que no se utilizará ninguna entrada debajoEditar:
IIS es una mierda, por lo que la mejor opción es borrar los staticTypes y volver a agregar todo en el orden correcto:
fuente