asp.net mvc - content - Ajuste del nivel de compresión IIS7 gzip
iis gzip compression web config (3)
En ASP.NET MVC he utilizado web.config para habilitar y configurar los ajustes de compresión IIS7.5 gzip. Pero comprimen que la configuración de nivel parece no tener ningún efecto:
<scheme name="gzip" dynamicCompressionLevel="9" staticCompressionLevel="9"/>
Con el nivel de compresión = 0 para ambas configuraciones, mi página de inicio está comprimida a 9,290 bytes (desde 39,623)
Con el nivel de compresión = 9 para ambas configuraciones, mi página de inicio tiene un gzip a 9,290 bytes (desde 39,623)
(usando el violín para verificar los tamaños comprimidos / sin comprimir)
No hay diferencia en la cantidad de compresión, ¿por qué? Esto ocurre en mi máquina de desarrollo local - Windows 7. Todavía no lo he probado en nuestro servidor web Win 2008.
Configuración de compresión completa en web.config:
<httpCompression directory="%SystemDrive%/inetpub/temp/IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%/system32/inetsrv/gzip.dll" dynamicCompressionLevel="10" staticCompressionLevel="10"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="application/x-javascript" enabled="true"/>
<add mimeType="application/xml" 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="application/x-javascript" enabled="true"/>
<add mimeType="application/xml" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
EDITAR: aparentemente el nivel más alto es 9. Esta página dice que es 10 pero debe ser incorrecto http://www.iis.net/configreference/system.webserver/httpcompression/scheme . El problema sigue siendo el mismo cuando se usa el nivel 9
¿Su tubería MVC incluye un filtro de compresión?
Si es así, tendrá prioridad sobre el módulo de compresión dinámica de IIS. La configuración de este módulo no tendrá efecto en su página MVC ya que el módulo de compresión dinámica IIS no intentará comprimir la salida que ya está comprimida en http.
Si su página de inicio no se genera dinámicamente, el dynamicCompressionLevel no tendrá ningún efecto.
Como la compresión estática está habilitada de manera predeterminada, probablemente ya haya una versión comprimida de la página de inicio en caché. Puede intentar simplemente modificar su página de inicio (por ejemplo, simplemente cambie un carácter). Debería volver a comprimir con la nueva configuración.
Es posible que la compresión estática predeterminada ya esté en el nivel 9. Si no ve ningún cambio, también puede intentar reducir el nivel estático a 1 para ver si hay alguna diferencia.
Es posible que deba proporcionar la DLL:
<scheme name="gzip" dll="%Windir%/system32/inetsrv/gzip.dll" staticCompressionLevel="9" />
Por favor, comprueba que tengas compresión dinámica instalada
A continuación, puede considerar anular algunos valores predeterminados de compresión. dynamicCompressionDisableCpuUsage
se establece en 90% y la compresión no volverá a dynamicCompressionEnableCpuUsage
hasta que vaya a dynamicCompressionEnableCpuUsage
que por defecto es 50%. Sugeriría plantear lo último.
El seguimiento de solicitudes fallidas también se recomienda en varios lugares en SO para este tipo de problema que podría ayudarlo a detectar el problema.
Hay algunas respuestas detalladas a las siguientes preguntas
¿Cómo puedo hacer que funcione la compresión gzip en IIS7?
ACTUALIZAR:
La configuración puede estar bloqueada en el nivel de la aplicación y, por lo tanto, debe intentar ejecutar lo siguiente:
appcmd set config -section:urlCompression /doDynamicCompression:true
Si todavía es un problema, podría valer la pena modificar minFileSizeForComp
cuyo valor predeterminado ha aumentado con versiones posteriores de IIS .
Como comenta, también intente hacer dinámico para comenzar y dejar estático mientras intenta solucionar esto.