Necesita ayuda con algunas configuraciones de compresión IIS7 web.config

9

Estoy tratando de configurar mis ajustes de compresión IIS7 en mi archivo web.config. Estoy tratando de habilitar las solicitudes HTTP 1.0 para que sean gzip.

MSDN tiene toda la información al respecto aquí .

¿Es posible tener esta información de configuración en el archivo web.config de mi propio sitio web? ¿O necesito configurarlo a nivel de aplicación? Actualmente, tengo ese código en mi 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>

No funciona :( Las solicitudes HTTP 1.1 se están comprimiendo, solo que no 1.0.

Esa página de MSDN anterior dice que se puede usar en: -

  • Machine.config
  • ApplicationHost.config
  • Aplicación raíz Web.config
  • Aplicación Web.config
  • Directorio Web.config

Entonces, ¿podemos establecer esta configuración por sitio web, programáticamente en un archivo web.config? (este es un archivo Application Web.config ...) ¿Qué he hecho mal?

salud :)

EDITAR: Me preguntaron cómo sé que HTTP1.0 no se está comprimiendo. Estoy usando las Reglas de seguimiento de solicitudes fallidas, que informan: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
Pure.Krome
fuente

Respuestas:

3

Preste mucha atención al hecho de que la configuración IIS 7.x web.config de

noCompressionForProxies="false"

No se honra en el nivel web.config. Debe establecerse en C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config de esta manera:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Asegúrese de realizar un reinicio de IIS después de cambiar la configuración.

IIS determina que una solicitud proviene de un proxy si la solicitud web del cliente tiene el encabezado HTTP "Vía" de la siguiente manera:

Via: 1.1 foo
Evermeire
fuente
También puede usar appcmdpara establecer configuraciones de nivel de aplicación (que probablemente sea mucho más fácil).
Pure.Krome
2

Después de un poco de investigación, está 'bloqueado' por defecto en el nivel de la aplicación. Como tal, necesita ser 'desbloqueado'. Esto se puede lograr a través de la línea de comandos o mediante las herramientas de administración de iis7 (descarga adicional).

p.ej. appcmd set config -section:urlCompression /doDynamicCompression:true

Referencias

Pure.Krome
fuente
1

¿Cómo está probando que las solicitudes HTTP1.0 no se comprimen? ¿Podría ser que el cliente que está utilizando no le está diciendo al servidor que puede aceptar una respuesta comprimida?

Si puede ver los encabezados enviados por el cliente (presentados por el cliente de prueba en sí, usando Firebug o similar si está probando en Firefox o IEHTTPHeaders si está probando en IE, o olfateando el tráfico con una herramienta externa), debe ver algo como

Accept-Encoding: compress, gzip, deflate

ahí en alguna parte. Si el cliente no informa al servidor que puede aceptar una respuesta comprimida, entonces el servidor no enviará una, independientemente de las otras configuraciones que tenga en el lado del servidor.

Otro problema podría ser si está probando a través de un servidor proxy que se identificó como tal. En este caso, la configuración noCompressionForProxies podría tener prioridad y bloquear la posibilidad de una respuesta comprimida.

Una cosa a tener en cuenta es que algunos clientes y servidores proxy que envían solicitudes HTTP1.0 (generalmente un software más antiguo) no manejarán correctamente una respuesta comprimida si obtienen una, por lo que si habilita la compresión para las respuestas a las solicitudes HTTP1.0, asegúrese de que pruebe su sitio / aplicación en todo el software cliente / proxy que espera que utilicen los visitantes / usuarios. Esto no es un problema si puede garantizar que su público objetivo utilizará cierto software (si, por ejemplo, la aplicación es solo para una red corporativa interna), pero de lo contrario, hay muchas combinaciones para probar, por lo que la mayoría de los servidores deshabilitan la compresión para 1.0 solicitudes por completo.

David Spillett
fuente
Estoy probando que las solicitudes HTTP1.0 no se comprimen utilizando las Reglas de seguimiento de solicitudes fallidas, que informan: - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS Motivo: 3 Motivo: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome