Tag Archive for viewstate

Disminuyendo el ViewState, moviéndolo al fin de página

Comprimiendo el ViewState, usando el Browser File

Disminuyendo el ViewState, Server Side State con Session

Creo que para estas alturas más de alguien tiene que haber pensado algo como: “Hey, si puedo controlar donde guardar el ViewState, porqué en vez de ‘comprimirlo’ y enviarlo al cliente no lo ‘guardo’ en el servidor?”

Pues claro que se puede, en la .Net Framework 2.0 se agregó una propiedad más a la System.Web.UI.Pagellamado PageStatePersister que retorna un objeto de tipo PageStatePersister, este se utiliza en la ejecución de la cascada del runtime de asp.net para retornar el objeto encargado de persistir el ViewState (o sea, guardarlo o retraerlo). Cómo los desarrolladores de ASP.net siempren andan buscando un “shortcut” y a más de alguien se le debe haber ocurrido guardar el ViewState en la sesión del usuario (que por defecto se guarda en la memoria del AppPool en el servidor) existe ya un PagePersister conocido como SessionPageStatePersister, para usarlo basta con hacer lo siguiente:

using System;
using System.Web.UI;

namespace WebApplication8
{
    public partial class _Default : Page
    {
        protected override PageStatePersister PageStatePersister
        {
            get { return new SessionPageStatePersister(this); }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

Listo, ahora nuestro ViewState no existe en la página sino en la sesión del usuario donde quiera que esta se este guardando (recuerdan? InProc? Session Server?). Hay que tener cuidado porque por defecto la sesión tiene una duración de 20 minutos y si se recicla el Application Pool no solo perdemos los datos de la sesión, sino también el ViewState. Otro problema es que el SessionPageStatePersister guarda una cantidad “fija” de elementos dentro del historial de la sesión, por defecto es de 9 items dentro del historial, esto lo podemos cambiar en el Web.config con la entrada sessionPageState

<system.web>
    <!-- otros elementos del system.web -->
    <sessionPageState historySize="20" />
</system.web>

Hey, un momento, eso indica que puedo usar el SessionStatePersister para crear mi propio storage server side del ViewState…… YEAH!!! exacto!!! pero eso será algo que no tocaré en esta serie de artículos, o quizás si, pero después :)

Saludos!

Disminuyendo el ViewState, reutilizando los cambios

El ViewState en ASP.NET 4.0

Hace ya muchas semanas atrás escribí sobre como comprimir el ViewState en ASP.net y así disminuir lo mayor posible el tamaño del ViewState renderizado en el cliente. Mi método era bien sencillo y simple (y al parecer usado por gente con Scott Hanselman), intentamos usando la compresión Zip (buen ratio), la 7Zip (excelente ratio), y la GZip incluída con la System.IO.Compression en la .Net Framework.

Hoy me entero leyendo la ASP.net Pro Magazine que ASP.net 4.0 incluirá soporte para comprimir el ViewState usando GZip de una manera muy similar a la que usamos en mi post anterior sobre el ViewState, bueno saber que ahora va a venir incluída!