Rendimiento, optimización, SEO para aplicación ASP.NET 4.5.1 (legacy WebForms, UpdatePanel, etc)

536 views
Skip to first unread message

Carlos Admirador

unread,
Jun 25, 2015, 5:13:58 PM6/25/15
to altnet-...@googlegroups.com
Hola grupo !!!
 
Tengo una aplicacion desarrollada para ser usada en por unos 2000 clientes, (asp.net 4.5.1, legacy webforms, con updatepanel, jquery (+ algunos plugins), unas 200 páginas aspx, con SqlSiteMapProvider, etc).  Siendo novato-profano-torpe en temas de rendimiento, mi duda es que con el paso del los años habrá herramientas gratuitas para mejorar el rendimiento de aplicaciones web ASP.NET 4.0 (legacy webforms -  updatepanel, etc) ? o una checklist avanzada sobre temas de optimización, rendimiento y SEO en aplicaciones ASP.NET?

A grosso modo, tengo estas tareas: pienso en validar XHTML de todas las 200 páginas aspx, de establecer correctamente las META en el head, el favicon, y luego pensar en configuración del web.config y configuración del IIS 7.5 de Windows 2008 R2 para aumentar rendimiento. También pienso en optimización del código fuente C# de todas las páginas aspx, controles ascx y handlers ashx (algo que no es nada trivial y ando totalmente perdido). Igual podría pensar en "cachear" datos o minimizar consultas a la base de datos. Y finalmente, de forma muy secundaria y no prioritaria pensar en el SEO. Ahora me pregunto cómo abordar todas estas tareas sin tener ni idea y siendo un torpe.

(en particular)
Debido a que en algunas pc que acceden estoy teniendo problemas aleatorios de acceso al sistema (mucho tiempo para devolver la informacion en el browser),  Desde chrome o IE estoy utilizando las developer tools, y viendo los tiempos de acceso y esas cosas, pero no estoy obteniendo ningun mensaje de error en si, sino tiempos muy largos en ciertas ocasiones

(En general), Querria saber si me pueden comentar sobre recursos que habitualmente usan para diagnosticar donde se pueden encontrar posibles problemas. 

Target: Trucos, herramientas, recursos para rendimiento y optimización de aplicaciones asp.net 4.0?

lmgtfy puedo obtener miles de referencias, para volverse loco. Desde MSDN Magazine, https://msdn.microsoft.com/en-us/magazine/ee310108.aspx, Codeproject, blogs, etcétera.

Lo ideal serían dos cosas:

1.) una guía avanzada y detallada de Microsoft, consejos que Microsoft aporta para el desarrollo de aplicaciones web de alto rendimiento.

2.) Aplicaciones asp.net reales de ejemplo que sigan esas buenas prácticas de rendimiento y optimización

NO encontré nada de alto nivel.

Algo para empezar,

Configuración web.config: http://www.humanlevel.com/articulos/desarrollo-web/como-configurar-internet-information-server-iis-para-mejorar-el-rendimiento-y-el-seo-de-tu-web.html

Consejos muy generales, pero sin ejemplos prácticos:
http://www.josecuellar.net/microsoft-asp-net/optimizando-el-rendimiento-de-asp-net/
http://miscosas.montisoft.es/asp-net/20-tips-para-mejorar-el-rendimiento-de-aplicaciones-asp-net

http://www.esandra.com/mejores-practicas-para-crear-sitios-web-de-alto-rendimiento/

Pueden existir cientos de herramientas,  "existen varias herramientas que te ayudarán y permitirán analizar la optimización del código para mejorar el posicionamiento en buscadores. Microsoft SEO Toolkit es una buena opción.", "herrramientas para optimizar el tiempo de carga, como por ejemplo GTMetrix", imagino que muchas más, yo me pierdo, y como torpón en esto, me pregunto cuáles deben ser las que se pueden utilizar (de forma gratuita)


Pueden comentar sus experiencias, su visión, sus buenas prácticas al respecto, sus ejemplos o aplicaciones asp.net que compartan, sus enlaces delicious o Pocket que compartan, etc ?
Desde ya muchas gracias!!

================================
Recopilatorio de años pasados en el grupo:


Libros de referencia pero antiguos

1. High Performance Web Sites, escrito en 2007
2. Cómo Diseñar Sitios Web Más Rápidos, escrito en 2009,

el complemento Firebug, una vez que lo tengamos instalado, debemos descargar nuestro segundo complemento YSlow,

Yo tambien he usado MiniProfiler (http://miniprofiler.com/) y me sirvio bastante. Es un poco intrusivo, pero sirve.
Otro que escuche es bastante bueno es Glimpse (http://getglimpse.com/) pero no lo he usado aun.

Yo uso para la parte de client side:

    YSlow para Firefox  https://addons.mozilla.org/en-US/firefox/addon/yslow/ para diagnosticar multiples request, tamaños etc... creo que con las dev tools de Chromer también lo podes hacer.
    Combres  http://combres.codeplex.com/, para unificar y minificar JS y CSS, en MVC 4 ya vienen los bundles, pero igual me gusta más Combres.

Luego ya en Server Side podes mirar Glimpse http://getglimpse.com/ que además tiene un "plugin" para Entity Framework http://www.nuget.org/packages/Glimpse.ef

Además trato de usar el Profiler de Ayende, el de Entity es: http://efprof.com/



Server != Client

Se puede decir que:

Render Time != Transfer Time != Layout time

En general: Tiempo para ver una pagina = (Server Render Time + Request Time + Response Transfer Time + Client Render Time) * Componentes * Factor de Correccion...


Ojo que del lado del server lo UNICO que sabes es el Server Render Time, todo lo demas depende tanto del cliente (Distancia, Browser, Red, Latencia, posicion de las estrellas, etc..)...

1.- Si no querés implementar nada lo mejor es contratar un SaaS que haga el análisis que necesitas, tené en cuenta que estos productos están enfocados para Business Intelligence por lo que pueden parecer excesivos para lo que nos explicas pero tienen las herramientas para hacer el trabajo.
mixpanel
https://mixpanel.com/
KISSmetrics
http://www.kissmetrics.com/

2.- Si querés implementar hay una librería desarrollada por Yahoo que se encarga de toda la parte del cliente,  entonces tenes que implementar el lado del servidor, recibir, analizar y exportar los datos.
Boomerang
https://github.com/yahoo/boomerang/

3.- Existe este proyecto, PiWik, que en su tiempo surgió como una alternativa libre a Google Analytics, esta en PHP+MySQL y es desarrollado activamente, no estoy seguro que haga todo lo que pedís pero lo podes usar como base, tiene su sistema de plugins y el foro es bastante bueno.
http://piwik.org/


Fijate este post de Jeff Atwood acerca de la performance de StackOverflow  http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html y este de Steve Souders sobre Web Performance Optimization  http://www.stevesouders.com/blog/2012/02/10/the-performance-golden-rule/


http://www.codeproject.com/Articles/149251/Debugging-Tracing-and-Instrumentation-in-NET-and-A

Quizas algo de este post te sirva
http://samsaffron.com/archive/2012/03/23/sam-s-ultimate-web-performance-tools-and-resources


Carlos Admirador

unread,
Jun 26, 2015, 10:57:11 AM6/26/15
to altnet-...@googlegroups.com
También una parte importante que se habla es Cache - Caching. 

Pues en mi aplicación tengo este caso cuando el usuario se valida, me quiero plantear obtener datos de Base de Datos, y hacer sólo esa consulta la primera vez. Según ciertos datos, tendrá o no accesible una opción del Menú (SqlSitemapProvider).
Entiendo, que puede aplicar en este caso la caché,
HttpContext.Cache, HttpContext.Current.User, HttpContext.Current.User.Identity , etcétera,

Sigo perdido en este tema pues no sé las implicaciones que pudiera tener.


Saludos.
Carlos

Carlos Peix

unread,
Jun 26, 2015, 11:19:42 AM6/26/15
to altnet-hispano
Hola Carlos,

Lo que yo haría es endender claramente donde me conviene dedicar el tiempo. Todo lo que mencionaste es posible pero puede que no te de resultados significativos.

Dejando de lado el SEO, creo que lo mejor buscar, de las 200 paginas de la aplicación cuales con las mas usadas (la mayoría del tiempo) y, de ese subconjunto, endender cuales son las que debes optimizar.

Luego, entendés cabalmente cuales son las fuentes mas importantes de demora (renderizado en el navegador, renderizado en el servidor, procesamiento en servidor, procesamiento en base de datos, etc).

Con esa información, comenzás a trabajar en la que mejor RoI tenga (beneficio sobre costo de la mejora). Asi hasta que se acabe el dinero o el tiempo o que ya estén satisfechos.

----------------------------------
Carlos Peix

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Carlos Admirador

unread,
Jun 27, 2015, 4:07:18 AM6/27/15
to altnet-...@googlegroups.com
Gracias Carlos tocayo por tu visión. Sin duda el tiempo es limitado y hay que centrarse en las páginas más usadas (esto me llevaría a otro tema de la mejor explotación de Google Analytics).
Mi pregunta va orientada la búsqueda de técnicas para ello, Buenas prácticas y lecciones aprendidas que puedan aportar.
Saludos.
Carlos!

Carlos Peix

unread,
Jun 27, 2015, 6:08:07 AM6/27/15
to altnet-hispano
Bien,

Estoy un poco oxidado en el estado del arte. De todas maneras, si digo una tontería, al menos servirá para que alguien más actualizado nos cuente.

Si el problema es (o sospechas que es) el renderizado en el navegador, podés provar YSlow (la Y, dicha en el afabeto ingles se dice "uai" que es la misma pronunciación de Why, por lo tanto, el producto se llama "Por que esta lento?").

Si vas un poco mas profundo, pueden ayudarte las herramientas para desarrolladores que muestran la comunicación navegador-servidor y que permiten ver los tiempos e información transferida. Además de las que suelen incluir los navegadores, tenes FireBug.

Y ya llegando al interior del servidor y para hacer un tracing superficial a nivel página, podes usar el tracing del propio ASP.NET (algunos links).

Luego ya las herramientas de tracing interno, como DotTrace, que debes comprar pero vale la pena dotTrace.

No deberías usar estos pasos como una secuencia predefinida. Cada uno te dará información que deberías utilizar para redirigir tu búsqueda.

Un saludo

----------------------------------
Carlos Peix

jan...@gmail.com

unread,
Jun 27, 2015, 3:24:10 PM6/27/15
to altnet-hispano
Hola Carlos,

Te recomendaria que te enfoque en lo que consume mas tiempo.  Si bien en la UI se consume en términos generales mas tiempo, es insignificante comparado con el tiempo que se consume en la DB o en el web server si la app esta mal hecha. Las soluciones generales que encuentres en internet te van a mejorar un poco solamente el rendimiento de la pagina.

Fíjate estas cosas:
Con el Log Parser Studio (http://blogs.technet.com/b/exchange/archive/2012/03/07/introducing-log-parser-studio.aspx) mira cuales son las paginas mas lentas, y empeza por ahí. 

Después, o junto con lo anterior, abri el SQL Profiler y hay un template que se llama algo así como SQL Duration. Con eso vas a poder ver los queries mas lentos, incluso podes filtrar para ver solo los que tardan mas de XXXX milisegundos.

Con respecto a la UI, pueden pasar muchas cosas. O usas YSlow o Google Page Speed, o algún “online site performance analyzer” que encuentres en google. Y eso te va a dar una dirección, pero definitivamente lo haría a lo ultimo si supones que la pagina no esta muy bien hecha.

Abrazo,
Diego

Sent from Windows Mail

Kiquenet

unread,
Jun 30, 2015, 12:44:39 PM6/30/15
to altnet-...@googlegroups.com
Sin duda es un tema muy amplio. Junto a lo anterior, igual es más ruido, pero un tema importante es también la seguridad de las aplicaciones. No he encontrado -aún- en github o codeproject aplicaciones ASP.NET que sigan buenas prácticas avanzadas, si aparece será un placer compartirlas con la comunidad.



Troy Hunt puede aportar más en este campo

Y la iniciativa OWASP (puede servir de sugerencia para un Wiki para AltNet  Hispano)

Carlos Admirador

unread,
Jul 16, 2015, 10:23:06 AM7/16/15
to altnet-...@googlegroups.com
Pues nada trivial, menos para un torpe como yo.  En esta (LARGA) lista de herramientas para Web Performance Optimization https://github.com/davidsonfellipe/awesome-wpo

 

Cuáles habéis utilizado o recomiendan? Lecciones aprendidas?


SAludos.

Carlos.

Kiquenet

unread,
Jul 20, 2015, 8:43:21 AM7/20/15
to altnet-...@googlegroups.com
Google Page Speed es (era) una extensión para Chrome.

Pero ahora está deprecada. Hay una versión online PageSpeed Insights, por lo que tu sitio web debe estar accesible públicamente, no valdrían sitios web de intranet o tipo localhost :'(

Sayed Ibrahim Hashimi y Mads Kristensen (creador de Web Essentials) tienen una extensión para Chrome de http://webdevchecklist.com/


YSlow estaba muy bien, hace mucho tiempo  que no la pruebo.

Kiquenet

unread,
Jul 21, 2015, 3:02:20 AM7/21/15
to altnet-...@googlegroups.com
Para Google Page Speed extensión, y no versión online actual:

Si algún otro compañero la tiene instalada, se puede hacer lo siguiente:

Abrir  chrome://version/ y buscar Profile Path, la ruta de las extensiones de Chrome, normalmente será:

C:\Users\<Your_User_Name>\AppData\Local\Google\Chrome\User Data\Default\Extensions 

Y entonces copiar la subcarpeta gplegfbjlmmehdoakndmohflojccocli, sin _metadata

Para utilizarla, en chrome://extensions/ activar Modo de desarrollador. Y elegir Cargar extensión descomprimida.

Kiquenet

unread,
Jul 21, 2015, 8:06:27 AM7/21/15
to altnet-...@googlegroups.com

Kiquenet

unread,
Jul 22, 2015, 4:06:09 PM7/22/15
to AltNet-Hispano

Carlos Admirador

unread,
Aug 5, 2015, 3:50:46 PM8/5/15
to AltNet-Hispano
Muchas gracias, ando muy perdido, todo a explorar. Creo que los siguientes pasos es avanzar en la escalabilidad de los sitios web, y dentro de ese concepto IMHO englobo rendimiento (performance)
http://es.slideshare.net/oazabir/scaling-aspnet-websites-to-millions-of-users?next_slideshow=1

Echo de menos guías detalladas prácticas de Microsoft al respecto. Refuerzo "prácticas".

Kiquenet

unread,
Feb 27, 2025, 7:39:45 AMFeb 27
to AltNet-Hispano
Estado del arte en 2025?
Reply all
Reply to author
Forward
0 new messages