ViewState kompression med BZip
Bara en första titt på den här: , använder några klass som jag använde i ett annat projekt. (I' attribuera kompressionskod senare. Sharpziplib grejer - med några modifikationer ♫ - ♫ Jag ♫' ♫ kommer att sätta tillbaka kommentarerhänderna för att hålla med Licensing grejerna senare ♫ МSK3 ♫ just nu se det som ett exempel ♫
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);
}
}
}
Att använda den, bara härta från denna sida istället för det normala Systemet.Web+.+UI+M SK3+Page+.+Ovenligtvis förlorar du några av de normala ViewStats funktionerna som kryptering, men dessa borde vara lätta att placera tillbaka i~...~ Jag ser i dagsläget ganska stora besparingar i ViewState-storlek genom att använda den här -+BZip+MSC8+kompressionen ♫ -+ifall den är en bit kod jag ljög om ♫...,+biten prova ut! ♫
I' har gjort en testprojekt för att leka med det här , det 's VS
UPDATE: Jag just gjorde några tester med det här ... som exempel , med hjälp av en DataSet uppbyggd från "Select * Från Ordern" från Northwind DB som kopplas till en standarddatarid ( jag valde det här för att vara den lägsta möjliga | ...), Jag går från ♫ 659984 ♫ byter i mina synvinkeln ♪ ♪ ner till ♫52080 ♫ Byte ♪ ... ♪ en besparing av runt ♫ МSK7 ♫
UPDATE:OK,OK för de som kritiserade koden ' detta är ett PROTOTYP - bara för att testa idén , Jag planerar att leka lite mer med det här vid en viss tidpunkt och kommer att titta på att inkludera några funkiga egenskaper som Denis Bauer's ViewState viewer byggt-in, olika kompressionssystem , olika kryptering | - inklusive den otroligt effektiva Två fiskar- kort sagt kommer det vara ett leksak för mig att titta på och utöka den nuvarande ViewState-implementationen