Skip to main content

Ultimos Posts:

Plan de choque para páginas ASP .net, ¡ A DIETA ESTRICTA !
Fecha entrada: Apr 2008 Palabras Clave: ASP .net; AJAX ASP .net; GridView; Performance; Viewstate; .net framework 2.0; Hosting; Java Script; Web Services; HTML; DHTML; Dynamic Controls; DOM; UpdatePanel;
Resumen post:Si no tenemos cuidado de como "alimentamos" a nuestras páginas ASP .net, nos encontraremos que estas tienden a ganar peso rapidamente, es no puede traer un montón de dolores de cabeza. Vemos como poner a dieta nuestras páginas.
Post:

Si no tenemos cuidado de como "alimentamos" a nuestras páginas ASP .net, nos encontraremos que estas tienden a ganar peso rapidamente, es no puede traer un montón de dolores de cabeza como:

  • --> Las cosas van de pena cuando movemos el sitio a producción (todo en "localhost" iba tan bien...)..

  • --> Si utilizas partial rendering (AJAX), tus páginas dejan de ser usables, los usuarios finales se te quejaran de que la aplicación no hay dios que la use.

  • --> Tu servidor lo va a pasar mal teniendo que generar páginas enormes (he llegado aver proyecto ASP .net que generaban páginas de hasta dos megas).

  • --> Puede llegar a saturar la red de tu empresa.

¿ Tu sitio web genera páginas que están por encima de los 100 K's... por encima de los 500 K's... incluso por encima del mega? Oh oh, tienes un problema, lo que vamos a hacer para solucionarlo:

  • --> Un plan rápido de acción: haciendo unos pequeños ajustes podemos reducir el tamaño de nuestras páginas entre un 5 y un 30 % (depende de como estén montadas las páginas y el contenido que muestren).

  • --> Otras medidas para reducir el tamaño de tus páginas, estás te llevarán algo más de tiempo implementarlas, pero puede tener buenas mejoras aplicándolas.

Lo primero de todo...¿ Como puede medir el peso de mi página o post parciales? Bajate Fiddler, es un sniffer gratuito que te permitirá chequear el tamaño de las peticiones y respuestas de tu sitio web.

Vale, ya tenemos la báscula, vamos a comenzar con el plan de acción:

  • --> Compilación: Un setting que a veces olvidamos y añade basura a nuestras páginas en producción; antes de compilar y desplegar, asegurate de que este setting está a false(*)
                          
                            <system.web>
                                <compilation debug="false">
                            

    (*) En tu entorno de desarrollo si tienes que tener esta opción a true para poder debuggear.

  • --> Espacios en blanco: en tu entorno de desarrollo el código fuente (ASPX) está identado a base de espacios en blanco y tabuladores; ¿Necesitas esto realmente en tu entorno de producción? Prueba esto: despliega tu proyecto y sobre los ASPX / ASCX (sobre los desplegados, no el código fuente de desarrollo) quita todos los espacios a la derecha de formateo, en algunos casos puedes llegar a notar un 20 / 30 % de mejora, y... si un día necesitas ver un página de producción, al cargarla con Visual Studio automáticamente se te reformateará automáticamente. Si piensas que esto no tiene porque ser útil, piensa en un GridView y en el montón de TR / TD que puede haber, en este caso te puedes ahorrar un montooooon de peso.

    (**) Una buena idea es hacer una aplicación de consola que quite los espacios de forma automática (le das como parametro una ruta y te busca en las subcarpetas ASPX/ASCX para eliminarle los espacios en blanco).

  • --> Master page: Este me encanta... busca en tu master page los contentplaceholder y cambia los ID's por unos que no ocupen más de dos letras, esto te puede ahorrar un montón de espacio, date cuenta que este ID se repite como prefijo en cada control que este dentro de él.(***).
                          
                            <asp:ContentPlaceHolder runat="server" ID="phSidebar">
                            
    Change it to:
                          
                            <asp:ContentPlaceHolder runat="server" ID="sd">
                            

    (***) Tendrás que hacer un find/replace de todos estos ID's en las páginas hijas (bueno y asegurarte de que ningún espabilado a harcodeado los ID's en javascript en vez de utilizar CLIENTID).

  • --> Estilos: Si estás aplicando estilos a GridViews y muestras un montón de filas, mira de definirlos como clases CSS y utilizar nombres cortos para definirlos (ten en cuenta de que la definición estilos se repite en cada línea).

Es hora de subir los cambios a tu sitio y chequear con Fiddler cuanto peso has perdido.

¿ Necesita seguir bajando? Vamos a por el plan B (un poco más de curro, un poco más rendimiento):

  • --> ViewState: Elimina el Viewstate de tus Gridview (a ser posible de toda la página). ASP .net 2.0 trae el ControlState, esto hace un poco más fácil poder eliminar el ViewState (por ejemplo en un GridView readonly si quitas el ViewState, las funcionalidades de ordenar y paginación seguirán funcionando). Ten cuidado con esto, prueba bien los controles a los que les quites el ViewState.

  • --> DOM: Si parte del HTML que quieres generar no quieres que viaje en los post, generalo en el lado de cliente utilizando javascript.

  • --> listboxes / combo's mal diseñadas funcionalmente:Evita tener listboxes, combo's, u otros controles similares con más de 80 entradas, esto reduce la usabilidad de tus páginas, y además incrementa el paso. Una opción es cambiar esa combo por un AutCompleteExtender de AJAX... si tu cliente se encabezona, una opción es generar los items via servicio web + javascript.



Page (1) Of 1