El ViewState de una p├ígina ASP.NET 2.0 es lo que permite la "magia" de los PostBack. Se trata de un campo oculto que se env├şa con el formulario que introduce ASP.NET en todas las p├íginas ASPX y contiene informaci├│n sobre el estado de los controles de la misma. A partir de ├ęl se recupera dicho estado y parece que la p├ígina funciona como un formulario de escritorio tradicional.

El caso es que si tenemos muchos controles este ViewState puede llegar a ocupar mucho y eso hace que cada PostBack al servidor sea muy lento y se empiece a notar demasiado. En casos un poco extremos podemos tratar de minimizar este trasiego de información entre cliente y servidor persistiendo el ViewState en otro lugar en lugar de en un campo oculto de la página. Para ello ASP.NET 2.0 ofrece "de serie" un objeto especial llamado SessionPageStatePersister que permite conseguir precisamente ese efecto y qeu el ViewState se conserve en la memoria del servidor.

Para ello lo único que hay que hacer es sobreescribir la propiedad PageStatePesister de la página de forma que devuelva una referencia a un objeto de la clase que acabamos de mencionar. Muy sencillo.

Como ejemplo de c├│mo hacerlo he elaborado un peque├▒o v├şdeo que muestra paso a paso y con instrucciones la forma de hacerlo y compara una misma p├ígina antes y despu├ęs de usar esta t├ęcnica. El v├şdeo es del mismo estilo que los que tenemos en campusMVP (aunque all├ş suelen ser algo m├ís largos y con voz) y lo pongo como muestra del tipo de contenido multimedia que podr├ís encontrar en nuestros cursos:

Si no ves bien este v├şdeo pulsa aqu├ş.

Esto es ├║til para casos en los que el retardo debido al tama├▒o del ViewState sea grande, pero hay que tener cuidado ya que aunque ganamos mejora en la velocidad de los PostBack perdemos recursos en el servidor puesto que el ViewState se almacena en la RAM de ├ęste y la aplicai├│n ocupar├í mucho m├ís.

No se recimienda usar esta t├ęcnica para todas las p├íginas de un sitio o de manera generalizada. Ahora bien, si necestias hacerlo lo tienes muy f├ícil: creas una p├ígina que sobreescriba la propiedad y haces que todas las dem├ís hereden de ├ęsta.

Esta t├ęcnica se puede generalizar para crear clases de persistencia propias que en lugar de almacenar el ViewState en sesi├│n lo hagan en una base de datos, archivos, etc... Queda a tu imaginaci├│n.

Ma├▒ana o pasado pondr├ę una continuaci├│n de este post para ense├▒ar c├│mo podemos conseguir los mismo pero con otra t├ęcnica completamente distinta y que adem├ís funciona en TODAS las versiones de ASP.NET, desde la 1.0. ┬íHasta pronto!

💪🏻 ┬┐Este post te ha ayudado?, ┬┐has aprendido algo nuevo?
Pues NO te pido que me invites a un caf├ę... Te pido algo m├ís f├ícil y mucho mejor