2009-04-22 17 views
7

Estoy utilizando un servidor web virtual especialmente lento (nombre oculto) donde el rendimiento del disco puede ser muy malo. Por lo tanto, el primer golpe a mis sitios web de ASP.Net puede tardar más de 1 minuto en cargarse. (Después de la carga inicial, todo está en RAM y está bien).Cómo mejorar el rendimiento de inicio en IIS/ASP.Net

Me pregunto si alguien sabe cómo ordenarle a IIS que precargue el sitio. Es esencia, emular el primer golpe?

He jugado con todas las cosas de la precompilación, ayuda, pero no es un sustituto de lo anterior.

Gracias!

+0

Parece que hay un mejor soporte para esto en ASP.net 4.0: http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325464 –

+2

Mi solución por ahora es un poco hack pero ayuda. Uso un servicio de monitoreo del sitio que golpea una URL cada 30 minutos. –

Respuesta

3

¿Necesita reciclar su aplicación? Todas las opciones de reciclaje están en la configuración de IIS y se pueden ajustar para que sean apropiadas para su aplicación.

El escenario ideal sería eliminar todas las aplicaciones recicladas para que la aplicación siempre permanezca cargada. El reciclaje solo se produciría si el archivo web.config se cambia o se implementa una nueva versión de la aplicación.

Si se requiere un reciclaje diario, según la respuesta anterior, un archivo por lotes podría utilizarse para reciclar la aplicación y también podría llamar a iexplore.exe con la URL de la aplicación para "precargarla".

0

¿Por qué no puede tener un archivo por lotes que tiene i reset en él y tiene que programar para ejecutar todos los días en un momento determinado (cuando no hay usuarios en su sistema)?

0

Si su proveedor puede encontrar la forma de engancharse cuando reinicia el servidor web, puede hacer que un archivo de lote/script llegue a su sitio web después de que se reinicie el servidor web. Solo tendrá que presionar archivos únicos de ensamblaje de ASP.NET para obtener ese ensamblaje en particular en la memoria. Entonces, si tiene 1 ensamblaje que contiene 10 páginas, solo presione una de las páginas. Debería ser suficiente. Si tiene más de 1 ensamblaje, presione 1 página en cada ensamblaje para cargar esos ensamblajes en la memoria.

Si no puede tenerlo en su proveedor, entonces tiene que pensar en una forma más inteligente de hacerlo por su cuenta (es decir, saber cuándo el proveedor está restableciendo el servidor web y programar tareas en su máquina para alcanzarlas páginas usted mismo).

0

¿Cuánto del sitio desea precargar? ¿Cuántas páginas?

Puede precompilar el sitio para eliminar la parte de "compilación" del problema, pero si el sitio es lo suficientemente grande, puede que no tenga sentido "precargar" el sitio. Esto sería especialmente cierto si el sitio se ejecuta en múltiples hosts.

0

La primera vez que solicita una página de una aplicación compilada de ASP.NET después de que sus ensamblajes se hayan modificado, lleva mucho más tiempo procesar que una solicitud de página normal.

Una solución simple a su problema es, por lo tanto, solicitar una página de su aplicación inmediatamente después de cualquier modificación. De esta manera, usted es el primero en solicitar una página, y se incurre en la larga espera en lugar de sus usuarios.

Cuestiones relacionadas