Mejorar rendimiento Pagina .Net. disminuyendo tiempos de carga

.Net Sin comentarios »

Seguramente que a más de uno le resultarán obvios los puntos mencionados en este post para mejorar el performance de una aplicación web .Net,  y reducir el peso de una página, pero nunca esta de mas recordarlos.El que escribe sin ir  más lejos los tuvo que aplicar no hace mucho tiempo cuando un cliente solicitó el análisis de una aplicación para intentar disminuir los tiempos de carga.

Imaginemos el siguiente escenario:

Un formulario con un elevado número de componentes, entre ellos muchos dropdownlist anidados en un DataList. Los dropdownlist son cargados en el servidor, y tenemos varios tipos de combos en cada fila diferenciados por los valores que contienen, y estos se repiten en cada una de las filas del DataList.

Pues si por ejemplo, tenemos 4 combos distintos por fila y el Datalist contiene 20 filas, quiere decir que enviamos 20 veces el contenido de cada tipo de combos desde el servidor al cliente (20x4=80 contenidos repetidos). Además tenemos elementos en el formulario, simplemente para mostrar información, sin nunguna funcionalidad asociada.

Bueno con un escenario asi de simple podemos aplicar los siguientes trucos:

  1. Sustituir aquellos elementos que no tienen funcionalidad asociada por etiquetas que son los elementos más ligeros capaces de mostrar información. De esta manera eliminamos una sobrecarga del ViewState.
  2. No cargar los DropDownList en el lado del servidor. En vez de establecer los valores desde .Net, inyectar codigo javascript que defina variables que contengan arrays bidimensionales con la tupla valor y texto que definan cada una de las opciones del combo. Luego, desde cliente, en el onLoad del formulario, cargamos cada unos de los combos con los valores de las variables.
  3. Eliminar los espacios en blanco que se crean al generar el HTML de la página. Para ello, desde la misma página, podemos sobrescribir el método Render que es justo el último punto desde donde podemos modificar el HTML  antes de enviarlo al cliente.

Ahora veamos un ejemplo de código que sobrescribe el método Render de una página.

C#:
  1. protected override void Render(HtmlTextWriter writer)
  2. {
  3.     HtmlTextWriter swHtmlText = new HtmlTextWriter(new System.IO.StringWriter());
  4.  
  5.     base.Render(swHtmlText);
  6.  
  7.     //Obtenemos el HTML de la pagina
  8.     string strHtml = swHtmlText.InnerWriter.ToString();
  9.  
  10.     //Eliminamos todos los espacios en blanco que hay
  11.     //entre los controles
  12.     strHtml = Regex.Replace(strHtml, "^\\s+<", " <", RegexOptions.Multiline);
  13.     strHtml = Regex.Replace(strHtml, ">\\s+<", "> <", RegexOptions.Multiline);
  14.  
  15.     //Escribimos el nuevo HTML limpio
  16.     writer.Write(strHtml.Trim());
  17.  
  18. }

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in

Switch to our mobile site