Acelerar un ASP.Net Sitio Web o Aplicación


Tengo un Ajax.Net habilitado ASP.Net 2.0 sitio web. El alojamiento tanto para el sitio como para la base de datos está fuera de mi control, al igual que el esquema de la base de datos. En las pruebas en el hardware yo controlo que el sitio funciona bien, sin embargo, en el hardware del cliente, hay retrasos notables al recargar o cambiar las páginas.

Lo que me gustaría hacer es que mi solicitud sea lo más compacta y rápida posible cuando la entregue. Una idea es establecer fechas de caducidad para todos los recursos estáticos del sitio para no se retiran al cargar la página. Por recursos me refiero a imágenes, hojas de estilo enlazadas y archivos fuente JavaScript. Hay una manera fácil de hacer esto?

¿Qué otras formas hay de optimizar un sitio web. Net?

ACTUALIZAR: He ejecutado YSlow en el sitio y las áreas donde estoy siendo golpeado más duro están en el número de JavaScript y Hojas de Estilo que se cargan (23 archivos JS y 5 hojas de estilo). Todos menos uno (la hoja de estilo principal) ha sido insertado por Ajax.net y Asp. ¿Por qué tantos?

Author: Vaibhav, 2008-08-14

12 answers

  1. Combinación de scripts en. net 3.5 SP1
  2. Mejores prácticas para sitios web rápidos
  3. Compresión HTTP (gzip)
  4. Comprimir JS / CSS (diferente a la compresión http, minificar javascript)
    1. YUI Compressor
    2. . NET YUI Compressor

Mi mejor consejo es revisar el contenido de YUI. Tienen algunos grandes artículos que hablan de cosas como sprites CSS y tienen algunos agradable bibliotecas javascript para ayudar a reducir el número de solicitudes que el navegador está haciendo.

 23
Author: Darren Kopp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:08:26

Si está utilizando Firefox para probar su sitio web, es posible que desee probar una extensión de Firefox ingeniosa de Yahoo! se llama YSlow.

Analiza sus páginas web y proporciona calificaciones de A a F (A es la Mejor y F es la peor) para cada una de las mejores prácticas, para sitios web de alto rendimiento. Le ayudará a rastrear los elementos de su sitio web que podría optimizar para ganar aceleraciones.

 5
Author: Pascal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:11:07

Desactivar viewstate de forma predeterminada, será una diferencia de día y noche incluso en las páginas más simples.

 3
Author: DevelopingChris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:06:44

Escribí una entrada de blog sobre cómo mejorar ASP.NET página rendimiento esto hace un par de meses. Aquí hay algunas formas rápidas y fáciles -

  • Desactivar el estado de vista
  • Desactivar la validación de eventos
  • Implementar la compresión HTTP gzip/deflate para reducir el tamaño de la respuesta (número de bytes que el servidor tiene que enviar de vuelta al cliente)
  • Intente optimizar / minimizar las llamadas a su base de datos para cada solicitud
 2
Author: Seibar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-15 02:53:37

Creo que realmente necesita poder obtener algunos datos/telemetría de PerfMon reales de la aplicación mientras se ejecuta en producción para poder tomar una decisión inteligente sobre qué optimizar.

Como un consejo de tirar Me aseguraría de que su aplicación se implementa como un Release build y establecer debug="false" en la 'compilation' sección de su web.config.

 1
Author: Kev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:10:06

Parece que está empezando por asumir que su problema es el tamaño de descarga - que puede no ser necesariamente el caso. Usted debe hacer un poco de experimentación con su ASP.NET para determinar si hay áreas en su código que están causando retrasos indebidos. Si resulta que el tamaño de descarga no es su problema, deberá encontrar formas de almacenar en caché sus resultados (busque en el almacenamiento en caché de salida, que es un ASP.NET característica) u optimizar su código.

En cualquier caso - el primer paso cuando se mira a un el problema de rendimiento es siempre para verificar sus suposiciones primero, luego decidir un curso de acción.

 1
Author: John Christensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:28:00
 1
Author: Jon Sagara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 19:53:55

Podrías empezar a buscar estrategias de almacenamiento en caché. Los archivos estáticos como CSS (incluso los comprimidos) y las imágenes (incluso los optimizados) solo deben ser descargados una vez por el navegador durante un período de tiempo.

La combinación de Scirpt para AJAX ya se ha mencionado, pero no me di cuenta de la referencia al ScriptReferenceProfiler MS ha lanzado en codeplex para ayudar a averiguar qué combinar. Mike Ormond tiene un buen punto de inicio en este.

Otro consejo si estás haciendo mucho de inserciones a su base de datos es comprobar que el almacenamiento en caché del disco de su servidor está activado. Por ejemplo, tuve un importador de datos haciendo 1.2 millones de inserciones durante una carrera. Tomó 4 horas y el cambio sin el almacenamiento en caché. Tomó 16 minutos con él puesto.

 1
Author: Hmobius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-28 11:43:02

Una cosa general al usar ASP.NET y Ajax (cualquier biblioteca Ajax) juntos es evitar elephanting su Page_Load y Page_Init (y sus contrapartes de método) cosas ya que estos se ejecutarán en cada solicitud Ajax.

Cuando se dice que me desharía seriamente ASP.NET AJAX y usa cualquier otra cosa...

Anthem.NET, AjaxPRO.NET, jQuery o cualquier otra cosa que ASP.NET AJAX...

Por supuesto que usaría Ra-Ajax yo mismo ya que ese es mi proyecto. Pero entonces de nuevo soy parcial...

 1
Author: Thomas Hansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-20 09:06:08

Puede activar la compresión en función de que su cliente la soporte. Ver este artículo: link text

 0
Author: Campbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 18:55:21

Los recursos estáticos no deben reenviarse a menos que se modifiquen. IIS enviará un código de respuesta que indica al navegador que utilice la versión en caché.

 0
Author: GateKiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 18:55:58

También puedes mirar ASP.NET almacenamiento en caché de salida, que se puede aplicar de forma bastante granular a diferentes partes de su página:

Http://msdn.microsoft.com/en-us/library/xsbfdd8c (VS.71).aspx

 0
Author: Tim Booker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-17 22:58:58