|
Utilizar compresión HTTP en su sitio Web de IIS 5.0
Dan Evers,
MCSE, escritor de tecnologías Web
Equipo de documentación de Servicios de Internet Information Server
Microsoft Corporation
Servicios de Internet Information Server (IIS) 5.0 presenta la compresión
HTTP, una característica nueva que comprime los archivos antes
de enviarlos a través de la red. La compresión HTTP consigue
una transmisión más rápida de páginas entre
el servidor Web y los clientes preparados para la compresión, comprime
y almacena en caché archivos estáticos, y realiza compresión
a petición de resultados generados de forma dinámica. Mediante
el uso de compresión HTTP, algunos servidores Web mejoran su rendimiento
hasta en un 400%.
Este artículo trata los siguientes temas:
- Introducción a la compresión HTTP
- Para utilizar la compresión HTTP
- Procedimientos para habilitar la compresión HTTP
- Formas de personalizar la compresión HTTP
Introducción a la compresión HTTP
El uso de la compresión HTTP reduce el ancho de banda de la red
que se utiliza para transferir cada archivo desde el servidor al cliente.
Además, ayuda a reducir el tiempo de descarga y a mejorar el rendimiento
de los usuarios finales. La compresión HTTP utiliza los algoritmos
estándar GZIP y Deflate, que están integrados en Windows
2000, y en Internet Explorer 4 y versiones posteriores. Los algoritmos
de compresión y descompresión comprimen y almacenan en caché
archivos estáticos y, opcionalmente, realizan compresión
a petición de las respuestas generadas de forma dinámica
antes de enviarlas a través de la red. Estos mismos algoritmos
se utilizan de nuevo para descomprimir los archivos estáticos y
las respuestas dinámicas en un cliente compatible con HTTP 1.1.
Para obtener más información acerca del protocolo HTTP 1.1
y los algoritmos GZIP y Deflate, consulte Recursos relacionados, más
adelante en este mismo documento.
La primera vez que un cliente preparado para HTTP 1.1 solicita un archivo
estático, IIS envía el archivo sin comprimir al cliente.
IIS guarda entonces una copia comprimida del archivo estático en
la carpeta temporal designada. La próxima vez que un cliente preparado
para HTTP 1.1 solicita el archivo, IIS envía la versión
comprimida desde la carpeta temporal. IIS también hace un seguimiento
de las versiones originales sin comprimir de los archivos estáticos.
Cuando se actualizan los archivos estáticos originales, IIS actualiza
y vuelve a comprimir los archivos en la carpeta temporal. El resultado
dinámico de las aplicaciones no se almacena en caché en
la carpeta temporal, sino que el resultado de las secuencias de comandos
se comprime cada vez que se envía a un cliente.
Compresión HTTP no es lo mismo que Compresión de archivos
y carpetas. Estos métodos de compresión realizan tareas
muy diferentes, como se describe en la tabla siguiente.
Compresión HTTP
|
Compresión de archivos y carpetas
|
• Almacena en caché una versión
comprimida de los archivos estáticos en una carpeta temporal.
|
• Comprime el archivo original para ahorrar
espacio de disco.
|
• Los archivos leídos de la carpeta
temporal se escriben en memoria en estado comprimido.
|
• Descomprime el archivo en memoria cuando
se lee del disco.
|
• Envía archivos comprimidos a través
de la red, lo que reduce el uso del ancho de banda de la red y mejora
los tiempos de descarga.
|
• Envía archivos sin comprimir a través
de la red, por lo que no reduce el uso del ancho de banda de la red
ni mejora los tiempos de descarga.
|
Estos dos métodos de compresión no pueden utilizarse simultáneamente
en los mismos archivos. Si la compresión HTTP está habilitada
para un archivo o una carpeta, no podrá comprimirse mediante Compresión
de archivos y carpetas. Para obtener más información acerca
de Compresión de archivos y carpetas, consulte "Recursos adicionales",
más adelante en este mismo documento.
Importante Sólo los clientes compatibles con HTTP 1.1 solicitan
archivos comprimidos. Los clientes que no son compatibles con HTTP 1.1
solicitan y reciben de IIS los archivos sin comprimir, por lo que no se
benefician de los mejores tiempos de descarga que ofrecen los clientes
compatibles con HTTP 1.1. Las versiones 4 y posteriores de Internet Explorer,
el Explorador de Windows y Mi PC son clientes compatibles con HTTP 1.1
de manera predeterminada.
Para comprobar que Internet Explorer está configurado para utilizar
el protocolo HTTP 1.1:
Abra la hoja de propiedades Opciones de Internet.
- Si está utilizando Internet Explorer 4, se encuentra en el
menú Ver.
- Si está utilizando Internet Explorer 5, se encuentra en el
menú Herramientas.
- Seleccione la ficha Avanzadas.
- Bajo Configuración de HTTP 1.1, compruebe que está
seleccionada la opción Usar HTTP 1.1 (consulte la figura
1 siguiente).
Si su explorador no admite.GIF marcos incrustados, haga
clic aquí para ver el contenido en una página independiente.
Figura 1 La hoja de propiedades Opciones de Internet
Para utilizar la compresión HTTP
El aumento del rendimiento que se consigue gracias al uso de la compresión
HTTP está determinado por variables, como la capacidad del procesador
del servidor Web y el ancho de banda de la red. Los datos específicos
de rendimiento quedan fuera del alcance de este artículo; sin embargo,
se ofrecen algunas instrucciones generales acerca de cuándo habilitar
la compresión HTTP.
Situaciones ideales para habilitar la compresión HTTP:
- Ancho de banda de red estrecha: Los clientes que tienen acceso al
servidor Web principalmente mediante módem están utilizando
ancho de banda estrecho. Esto significa que la cantidad de datos que
se pueden transferir cada intervalo de tiempo es mínima en comparación
con una red de área local. Si un cliente solicita datos comprimidos,
se transferirán menos bytes a través de la red, lo que
da como resultado tiempos de descarga menores.
- La mayoría del contenido alojado es estático: Si el
servidor Web atiende principalmente archivos estáticos, la sobrecarga
del procesador será mínima porque los archivos estáticos
se almacenan en caché en una carpeta temporal. Los archivos estáticos
sólo se vuelven a comprimir cuando cambia el archivo original,
lo que reduce el tiempo que el procesador emplea en comprimir y volver
a comprimir archivos.
- Espacio en disco adecuado: Si habilita la compresión HTTP,
asegúrese de que tiene suficiente espacio de disco como para
almacenar las versiones sin comprimir y las versiones comprimidas de
los archivos estáticos.
Situaciones no ideales para habilitar la compresión HTTP:
- Valor elevado del contador % de tiempo de procesador: Si el contador
% de tiempo de procesador ya está al 80 % o más, no se
recomienda utilizar la compresión HTTP a menos que pueda actualizar
la CPU del servidor.
- Contenido dinámico: Si en el servidor se genera un gran volumen
de contenido dinámico, al habilitar la compresión HTTP
para los archivos de aplicación se hará un mayor uso del
procesador. Como el contenido dinámico no se almacena en caché,
se debe volver a comprimir cada vez que lo solicita un cliente.
- Espacio en disco inadecuado: Si el servidor no tiene espacio de disco
disponible para almacenar los archivos comprimidos, no habilite la compresión
HTTP hasta que pueda agregar más espacio a la unidad de disco
duro del servidor.
Para obtener más información acerca de cómo supervisar
los contadores de rendimiento, consulte "Recursos relacionados", más
adelante en este mismo documento.
Como se mencionó anteriormente, la compresión HTTP conserva
el ancho de banda de la red y reduce los tiempos de descarga al reducir
el tamaño de un archivo antes de transferirlo a través de
la red. Sin embargo, esto requiere más recursos del servidor para
la compresión y más recursos del cliente para la descompresión
(consulte la tabla 1).
Tabla 1 Recursos y demandas con la compresión HTTP habilitada
Recurso
|
Servidor
|
Cliente
|
Procesador
|
• La compresión de resultados dinámicos
requiere más ciclos de procesador (CPU) en el servidor.
• Sólo es necesario volver a comprimir los archivos estáticos
cuando se actualizan en el servidor.
• Es necesario comprimir el resultado de las aplicaciones dinámicas
cada vez que lo solicita un cliente.
• Sólo es necesario volver a comprimir los archivo estáticos
cuando se actualizan en el servidor.
|
• La descompresión de archivos en
el cliente requiere más ciclos de procesador (CPU).
|
Espacio en la unidad de disco duro
|
• El servidor almacena en caché los
archivos estáticos comprimidos en la unidad de disco duro,
de manera que no haya que volver a comprimirlos cada vez que los solicite
un cliente.
• El almacenamiento en caché de la versión comprimida
de un archivo estático, además de la versión
sin comprimir del archivo, requiere espacio adicional en el disco
duro.
• El resultado de las aplicaciones dinámicas no se almacena
en caché en el disco duro.
|
• No se necesita espacio adicional en el
disco duro del equipo cliente.
|
Procedimientos para habilitar la compresión HTTP
Debe establecer una línea de referencia del rendimiento del servidor
Web antes de habilitar la compresión HTTP; de esta forma podrá
determinar mejor si es conveniente utilizar la compresión HTTP
para su situación en particular.
Utilice Monitor de sistema para registrar el contador % de tiempo
de procesador del objeto Procesador durante varios días
con el fin de establecer una línea de referencia. Este contador
tiene una instancia Total y una instancia diferente para cada procesador
del sistema. (Si su servidor tiene más de un procesador, probablemente
deba observar los procesadores individuales, así como el total,
para descubrir cualquier desequilibrio en la carga de trabajo.)
Una vez obtenida una línea de referencia del rendimiento, habilite
la compresión HTTP en el servidor. Siga registrando el valor de
estos contadores durante un periodo de tiempo prolongado, preferiblemente
durante varios días. Compare los valores de referencia de rendimiento
con los valores obtenidos con la compresión HTTP. Si el contador
% de tiempo de procesador está constantemente por encima
del 80%, no debe utilizar la compresión HTTP hasta que no pueda
actualizar el servidor.
Para habilitar la compresión HTTP
La compresión HTTP se habilita servidor por servidor. Por tanto,
si en un único servidor Web con IIS 5.0 tiene varios sitios, habilitará
la compresión HTTP para todos los sitios.
- Desde el Administrador de servicios Internet, haga clic con
el botón secundario del mouse (ratón) en el icono
Equipo y seleccione Propiedades.
- En la ficha Servicios de Internet Information Server, bajo
Propiedades principales, seleccione Servicio WWW.
- Haga clic en Modificar; debe aparecer la hoja Propiedades
principales del servicio WWW.
- Seleccione la ficha Servicio (consulte la figura 2).
- Si desea comprimir archivos estáticos para transmitirlos a
los clientes que admiten compresión, seleccione Comprimir
archivos estáticos. Al seleccionar esta opción se
comprimirán y almacenarán en caché los archivos
que tengan las extensiones "htm", "html" y "txt".
- Escriba la ruta de acceso a un directorio local en el cuadro de texto
Carpeta temporal o utilice el botón Examinar para
encontrar un directorio donde se almacenarán los archivos comprimidos.
Importante El directorio que elija en el paso 6 debe encontrarse
en una unidad que sea local del servidor Web y debe estar en una partición
NTFS (Sistema de archivos de nueva tecnología). El directorio,
que no debe estar compartido, no puede ser un directorio comprimido
ni debe estar en un volumen comprimido. Para obtener más información
acerca de NTFS, busque la palabra clave "NTFS" en la Ayuda en pantalla
de Windows 2000.
- Si desea comprimir el resultado dinámico de las aplicaciones
para transmitirlo a los clientes que admiten compresión, seleccione
Comprimir archivos de aplicación. Al seleccionar esta
opción se comprime y se almacena en caché el resultado
dinámico de las aplicaciones cuyas extensiones de archivo son
"dll", "asp" y "exe".
Importante No se recomienda comprimir el resultado de los
archivos de aplicación a menos que muchos clientes vayan a
tener acceso al servidor a través de una conexión lenta,
como un módem. Asegúrese también de que el servidor
Web tiene suficiente capacidad de procesador como para volver a comprimir
los archivos dinámicos cada vez que los solicite un cliente
antes de habilitar Comprimir archivos de aplicación.
- Para limitar el tamaño máximo de la carpeta temporal,
seleccione Limitado a y escriba un número entero en el
campo MB.
Si su explorador no admite marcos incrustados, haga
clic aquí para ver el contenido en una página independiente.
Figura 2 La hoja Propiedades principales del servicio WWW
De manera predeterminada, el tamaño máximo de la carpeta
temporal es ilimitado. Esto es válido para los servidores Web que
tienen suficiente capacidad de almacenamiento en disco duro para la versión
sin comprimir y para la versión comprimida de los archivos estáticos
almacenados en la carpeta temporal.
Sin embargo, si la escasez de espacio en disco es un problema, seleccione
Limitado a. Cuando se alcance el tamaño máximo de
la carpeta temporal especificado en el campo MB, IIS eliminará
256 archivos para hacer sitio y que se puedan almacenar en caché
en la carpeta temporal los nuevos archivos comprimidos. La configuración
de una carpeta temporal demasiado pequeña puede afectar al rendimiento,
ya que IIS tendrá que volver a comprimir y volver a almacenar en
caché los archivos estáticos, lo que significa un mayor
uso de la CPU y un mayor tiempo de acceso a la unidad de disco duro.
Formas de personalizar la compresión HTTP
Como se ha indicado anteriormente, la opción para comprimir los
archivos estáticos de la hoja Propiedades principales del servicio
WWW sólo comprime los archivos que tienen las extensiones "htm",
"html" y "txt". Además, la opción para comprimir archivos
de aplicación de esta hoja de propiedades sólo comprime
el resultado de los archivos cuyas extensiones son "dll", "asp" y "exe".
Estas extensiones de nombre de archivo se guardan como parámetros
en las claves HcFileExtensions y HcScriptFileExtensions de la metabase,
respectivamente. No es posible personalizar estos parámetros predeterminados
desde la hoja de propiedades; sin embargo, se pueden personalizar modificando
la metabase directamente, como se muestra en los escenarios siguientes.
Para obtener más información acerca de la metabase, busque
la palabra clave "metabase" en la documentación en pantalla de
IIS 5.0.
En los escenarios siguientes se describe cómo agregar tipos de
archivo o quitar tipos de archivo de la lista indicada anteriormente de
tipos de archivo que se pueden comprimir. Es preciso realizar los pasos
siguientes además de los enumerados anteriormente en la sección
"Para habilitar la compresión HTTP".
Escenario 1
La opción para comprimir archivos estáticos se ha habilitado
en la hoja Propiedades principales del servicio WWW (consulte la
figura 2). Además de comprimir archivos con las extensiones "htm",
"html" y "txt", también puede decidir comprimir archivos que tengan
las extensiones "doc" y "xls".
Los comandos enumerados en el paso 3 siguiente reemplazan las extensiones
de archivo definidas previamente después de reiniciarse los Servicios
de IIS. Los nuevos parámetros ("doc" y "xls") no se anexan a las
extensiones de archivo existentes; por tanto, incluya también los
tipos de archivo habilitados antes mediante la hoja Propiedades principales
del servicio WWW.
- Abra una ventana de símbolo del sistema.
- Dentro de la ventana de símbolo del sistema, vaya hasta \inetpub\AdminScripts
del servidor en el que vaya a habilitar la compresión HTTP.
- Escriba las líneas siguientes en la ventana de símbolo
del sistema:
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcFileExtensions
"htm" "html" "txt" "doc" "xls"
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcFileExtensions
"htm" "html" "txt" "doc" "xls"
IISreset.exe /restart
Utilice el Explorador de Windows para ver cómo las versiones comprimidas
de los archivos aparecen en la carpeta que seleccionó como carpeta
temporal en la hoja Propiedades principales del servicio WWW (consulte
la figura 2). Recuerde que estos archivos sólo se almacenan en
caché en la carpeta temporal la primera vez que los solicita un
cliente.
Escenario 2
La opción para comprimir archivos de aplicación se ha habilitado
en la hoja Propiedades principales del servicio WWW (consulte la
figura 2). De manera predeterminada, esto comprime el resultado dinámico
de los archivos cuyas extensiones son "dll", "asp" y "exe". Decide no
comprimir el resultado de los archivos que tienen las extensiones "exe"
o "dll" y sólo comprime el resultado de las secuencias de comandos
de los archivos ASP.
Del escenario 1 hemos aprendido que los comandos enumerados en el paso
3 siguiente reemplazan las extensiones de archivo definidas previamente
después de reiniciarse los Servicios de IIS. Los nuevos parámetros
no se anexan a las extensiones de archivo existentes; por tanto, omita
los tipos de archivo no deseados que se habilitaron antes mediante la
hoja Propiedades principales del servicio WWW.
- Abra una ventana de símbolo del sistema.
- Dentro de la ventana de símbolo del sistema, vaya hasta \inetpub\AdminScripts
del servidor en el que vaya a habilitar la compresión HTTP.
- Escriba las líneas siguientes en la ventana de símbolo
del sistema:
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions
"asp"
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions
"asp"
IISreset.exe /restart
Si se ha habilitado la compresión tanto de los archivos de aplicación
como de los archivos estáticos, el procedimiento del escenario
2 no afectará a la configuración de los archivos estáticos
establecida en el escenario 1 ni a la configuración predeterminada
de la hoja Propiedades del servicio WWW.
Escenario 3
Decide seleccionar la opción Limitado a para el tamaño
máximo de la carpeta temporal y escribe 500 en el campo MB. De
manera predeterminada se eliminan 256 archivos cuando se alcanza el tamaño
máximo de la carpeta temporal (ahora está establecido como
500 MB). Cree que el rendimiento mejoraría si se eliminaran menos
archivos al llegar a este límite y decide cambiar este valor a
10.
- Abra una ventana de símbolo del sistema.
- Dentro de la ventana de símbolo del sistema, vaya hasta \inetpub\AdminScripts
del servidor en el que vaya a habilitar la compresión HTTP.
- Escriba las líneas siguientes en la ventana de símbolo
del sistema:
cscript.exe adsutil.vbs set 3Svc/Filters/Compression/Parameters/HcFilesDeletedPerDiskFree
10
IISreset.exe /restart
El número que sigue inmediatamente a HcFilesDeletedPerDiskFree
es el número de archivos que se eliminan. En el ejemplo anterior
elegimos 10, pero es válido cualquier número entero.
Escenario 4
De manera predeterminada, cuando se selecciona la opción para
comprimir archivos estáticos se comprimen y almacenan en caché
todos los archivos que tienen las extensiones "htm", "html" y "txt", independientemente
del tamaño de archivo original. En el caso de archivos estáticos
muy pequeños, por ejemplo 10.000 bytes (10 KB), la versión
comprimida del archivo puede ser realmente mayor que el archivo sin comprimir.
Sabiendo esto, decide no comprimir los archivos de menos de 20.000 bytes
(20 KB).
- Abra una ventana de símbolo del sistema.
- Dentro de la ventana de símbolo del sistema, vaya hasta \inetpub\AdminScripts
del servidor en el que vaya a habilitar la compresión HTTP.
- Escriba las líneas siguientes en la ventana de símbolo
del sistema:
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/Parameters/HcMinFileSizeForComp
20
IISreset.exe /restart
El número que sigue inmediatamente a HcMinFileSizeForComp es el
tamaño mínimo de archivo estático (en KB) que se
comprimirá y almacenará en caché.
Conclusión
Espero que este artículo haya contribuido a entender mejor la
compresión HTTP.
Ya sabe lo que es la compresión HTTP, cómo funciona y cómo
decidir si debe utilizarla. Cuando la compresión HTTP está
habilitada, los usuarios del sitio Web pueden tener mejores tiempos de
descarga si utilizan clientes compatibles con HTTP 1.1. Recuerde probar
siempre el rendimiento del servidor antes de decidir si habilita o no
la compresión HTTP. Es conveniente seguir supervisando el rendimiento
del servidor de manera continuada, especialmente el contador % de tiempo
de procesador. La supervisión del contador % de tiempo de
procesador es especialmente importante si comprime el resultado dinámico
de los archivos de aplicación, ya que el contenido dinámico
se comprime cada vez que lo solicita un cliente.
También ha aprendido cómo habilitar y personalizar aún
más la compresión HTTP en el servidor Web. Los escenarios
mostrados anteriormente deben ser una buena referencia cuando esté
en condiciones de habilitar esta eficaz característica nueva en
su servidor Web de IIS 5.
Recursos relacionados
Documentos RFC
RFC es un acrónimo de Request for Comments, un documento
en el que se publica un estándar, un protocolo u otra información
relativa al funcionamiento de Internet. El RFC se publica realmente, bajo
el control de IAB, después de su discusión y sirve como
estándar. Es posible obtener los RFC en lugares como InterNIC.
RFC 2068 Hypertext Transfer Protocol – HTTP 1.1
<http://www.cis.ohio-state.edu/htbin/rfc/rfc2068.html>
Este documento es una descripción exhaustiva del protocolo HTTP
1.1.
RFC 1951<http://www.cis.ohio-state.edu/htbin/rfc/rfc1951.html>
En este documento se describe la especificación de formato de datos
comprimidos Deflate integrado en IIS 5.0 y en las versiones 4 y superiores
de Internet Explorer.
RFC 1952<http://www.cis.ohio-state.edu/htbin/rfc/rfc1952.html>
En este documento se describe la especificación del formato de
archivo GZIP que se utiliza para comprimir y descomprimir archivos. Esta
especificación está integrada en IIS 5.0, y en Internet
Explorer 4 y posteriores.
Supervisar el rendimiento del procesador
Ayuda en pantalla de IIS 5.0
Busque las palabras clave "procesador" y "% de tiempo de procesador"
Ayuda en pantalla de Windows 2000 Server
Busque la palabra clave "Supervisar la actividad del procesador"
Guía de recursos de Servicios de Microsoft Internet Information
Server 5.0, páginas 195 a 197
Este libro forma parte del Kit de recursos de Microsoft Windows 2000 Server
- ISBN: 1572318058
Buena introducción relativa a la supervisión de los procesadores
del servidor.
Solutions for Poor Server Performance
Un artículo de TechNet escrito por Gary Duthie donde se explican
los contadores de rendimiento.
http://technet2.microsoft.com/windowsserver/en/technologies/featured/iis/default.mspx
Compresión de archivos y carpetas
Guía de operaciones de Microsoft Windows 2000 Server, páginas
141 - 147
Este libro forma parte del Kit de recursos de Microsoft Windows 2000 Server
- ISBN: 1572318058
Ayuda en pantalla de Windows 2000 Server
Busque las palabras clave "Comprimir un archivo o una carpeta en una unidad
NTFS", "Para cambiar las propiedades de archivos o carpetas", "Mostrar
las carpetas y los archivos comprimidos en un color diferente", "compactar",
"Para comprimir una unidad NTFS" y "Consideraciones cuando se planean
particiones de discos".
|