# ViewState compresión usando BZip2...protótipo más reciente...

<datetime class="hidden">2004-02-29T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, ASP.NET, Performance -->
Sólo un primer paso en esto, utiliza algunas clases que he utilizado en otro proyecto (IM SK2 asignará el código de compresión más tardeMSC3creo que lo he recibido del [El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.](http://www.icsharpcode.net/OpenSource/SharpZipLib/) stuff - con algunas modificaciones - I' pondré los encabezamientos de comentarios de vuelta para cumplir con la materia de licencias más tarde - ahora considere que es un ejemplo soloMSC4 el código actual para comprimir las viewstate es VERY sencilloM SK5

```
using System;
using System.Web.UI;
using System.IO;
namespace ViewStateCompression
{
    /// 
    /// Summary description for CompressedVSBasePage.
    /// 
    public class CompressedVSBasePage :System.Web.UI.Page
    {
        private LosFormatter  _formatter = new LosFormatter();
        protected override void SavePageStateToPersistenceMedium(object viewState)
        {
            StringWriter sw = new StringWriter();
            _formatter.Serialize(sw, viewState);
            ComDePress cmp = new ComDePress();
            string outStr = cmp.Compress(sw.ToString());
            Page.RegisterHiddenField("__COMPRESSEDVIEWSTATE",outStr);
        }
        protected override object LoadPageStateFromPersistenceMedium()
        {
            string vsString = Request.Form["__COMPRESSEDVIEWSTATE"];
            string outStr = new ComDePress().DeCompress(vsString);
            return _formatter.Deserialize(outStr);
        }
    }
}
```

Para usarlo, simplemente heredar de esta página en lugar del sistema normalM SK1Web.UIMNK3PageMSC4 Obviamente pierdes algunas de las funciones normales de ViewState como la criptación - pero estas deberían ser fáciles de colocar de nuevo enMRK6Me he visto en estos momentos ganancias bastante grandes en el tamaño de View State usando este MSSK7 utilizando BZipMST8 compresión - tal y como es SST10 es un fragmento de código que había mentido sobreMSS11 por favor, intenteloMSKS12 Cualquier comentario |MST13 | sugerencias son |MSKS14 | como siempre |SST15 | apreciadas | SST16 |

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. [proyecto de prueba para jugar con esto](/uploads/ViewStateCompression.zip) , esM SK1s VS.NET 2003, tiene todo lo necesario (incluyendo la materia de compresiónMSC5

UPDATE: He estado haciendo algunas pruebas con esto...como ejemploM SK2 usando un DataSet poblado de "Select \* De los pedidosM SK1 de la Northwind DB vinculada a un DataGrid por defecto ( he elegido esto para ser el más porkiest posible...), Vago desde \659984 bytes en mis vistastate hasta \ 52080 BytesMSC6 un ahorro de alrededor de |92% | - lo que creo que es bastante impresionanteMSSK9 yo |' estoy seguro de que hay algunos inconvenientes a este ♪ (a parte de los pocos ciclos adicionales necesarios para la compresión ♪) \ - pero ¿existe alguna razón real por la cual MS no da una opción de compresión para ViewState out ♪

UPDATE: OKM SK1 para aquellos que ' han criticado el código... éste es un PROTOTYPE MSC4 solo para probar la ideaMST5 planeo jugar con esto un poco más en algún momento y estaré estudiando la inclusión de algunas características Funky como [Denis Bauer's ViewState viewer](http://www.denisbauer.com/ASPNETControls.aspx) Construido-inM SK1 diferentes sistemas de compresión, distintas cifras - incluyendo el increíblemente eficiente [El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.](http://www.codeproject.com/csharp/twofish_csharp.asp)- en pocas palabras, será un juguete para mí ver y ampliar la implementación actual de ViewState.