Optimizaciones de IIS 7.5 para un sitio que solo sirve contenido estático

21

Estoy buscando configurar un dominio sin cookies destinado a servir contenido estático para una aplicación web, similar al sitio http://sstatic.net/ que usan los sitios de intercambio de pila.

Mi pregunta es, ¿qué optimizaciones puedo hacer a mi configuración de IIS 7.5 para dicho dominio? Por ejemplo, nunca será responsable de nada más que servir contenido estático, por lo que deshabilitar la integración de ASP.NET sería un buen movimiento para este sitio.

Cualquier sugerencia o referencia sobre la configuración de dicho sitio con IIS 7.5 sería bienvenida.

Editar

Solo para aclarar, este no es el ÚNICO sitio en el servidor, por lo que las optimizaciones sugeridas deberían apuntar al nivel del sitio, y no a la configuración a nivel del servidor.

DanP
fuente

Respuestas:

18

Hay varias consideraciones en esto, algunas que se manejan en IIS (compresión HTTP, cabeceras de almacenamiento en caché fx), y algunas que se manejan durante el proceso de compilación / antes de la implementación (como la concatenación de archivos JavaScript y CSS y la minificación de espacios en blanco).

Como tal, es un poco difícil darle un resumen completo en una respuesta, ya que parte de esto dependerá de sus métodos de compilación y lanzamiento. En pasos de alto nivel:

  • El sitio está "sin cookies" en virtud de que usa un nuevo dominio, uno que no está vinculado a su aplicación web. Como no está configurando ninguna cookie para el dominio (usando el código de la aplicación fx .NET), entonces es "sin cookies".

  • Debe habilitar absolutamente la compresión HTTP para contenido de texto estático como Javascript y CSS.

  • No soy el mejor administrador de IIS, pero por lo que puedo decir, solo necesita los componentes predeterminados de IIS asociados con la función básica del servidor "Servidor web (IIS)" .

  • Debe habilitar absolutamente los encabezados de almacenamiento en caché largos para el contenido estático . La recomendación general es de 31 días, pero puede configurarla más alta o más baja. Recuerde, si sirve contenido estático con encabezados de caché largos, debe cambiar la URL si cambia el archivo, para evitar que los clientes reutilicen el contenido en caché antiguo.

  • Usted debe permitir mantenimiento de conexiones HTTP (los mismos documentos como el almacenamiento en caché cabeceras).

Además de esto, hay tareas previas a la implementación, como el espacio en blanco que comprime Javascript y CSS , e idealmente comprime mejor los PNG , etc. Estas son sus herramientas de desarrollo y el ciclo de construcción ayuda a decidir cómo proceder.

Cuando haya terminado, intente descargar algunos archivos de sus servidores estáticos con YSlow habilitado . Me parece que el conjunto de reglas "Classic V2" tiene el mayor impacto para el esfuerzo, por lo que sugeriría comparar su puntaje con este conjunto de reglas YSlow.

Del conjunto de reglas "Classic V2", estas reglas se aplican limpiamente a las instancias y contenido de IIS de su servidor estático:

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable
Jesper M
fuente
Gracias por sus comentarios: ya me he ocupado de las consideraciones de preproducción que ha notado. Lo que realmente busco es la esencia de la configuración de IIS. Puesto que no hay nada más que el contenido estático, supongo que puedo eliminar una gran cantidad de cosas de la tubería http, etc
DANP
1
@DanP: Realmente no hay mucho trabajo en la configuración de IIS. Microsoft se está volviendo bueno en el envío de configuraciones mínimas "seguras por defecto". La optimización del rendimiento mediante la eliminación de los componentes IIS que forman parte de la función básica del servidor es la optimización prematura de mi humilde opinión. Casi puedo garantizar que la ganancia de rendimiento no valdrá la pena, ya que el servicio de archivos estáticos generalmente tiene una carga de servidor trivialmente baja. Para el rendimiento del usuario final, la parte importante es obtener la semántica HTTP correcta: almacenamiento en caché de encabezados, compresión, keepalive, según los documentos anteriores.
Jesper M
Los valores predeterminados están diseñados para el servicio de archivos estáticos: si solo agrega la función de servidor web, está configurado con una canalización mínima para servir archivos estáticos. Entonces, para minimizar la tubería, ¡no instale nada más!
TristanK
@TristanK: Creo que debería ser más específico ... este no es el ÚNICO sitio en el servidor IIS, así que necesito hacer mis optimizaciones a nivel del sitio, no a nivel del servidor.
DanP
Sí, esa es una información clave. Si ha decidido que esta es su ruta elegida, creo que a) instale una nueva para comparar, b) marque todos los módulos / controladores que desee eliminar (que no son parte de la instalación predeterminada) con precondition = " AppPoolName! = StaticPool "(podría tener la sintaxis hacia atrás allí). Eso es todo, incluir / excluir módulos en un grupo de aplicaciones dado.
TristanK
9

Aquí hay un artículo muy interesante donde alguien está usando IIS para servir archivos estáticos. Se concentra principalmente en ajustar la configuración de almacenamiento en caché del archivo IIS para limitar la actividad del disco (que era su cuello de botella). Él dice que ha visto un aumento de 20 veces en el rendimiento.

Hasta el arroyo
fuente