Vain ensimmäinen puukotus tässä, käyttää joitakin kursseja käytin toisessa projektissa (määritän pakkauskoodin myöhemmin...Uskon, että sain sen Sharpziplib jutut - joillakin muokkauksilla - laitan kommenttiotsikot myöhemmin takaisin noudattamaan Lisenssi-juttuja - juuri nyt se on vain esimerkki) todellinen koodi näkymätilan tiivistämiseksi on erittäin yksinkertainen:
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);
}
}
}
Käyttääksesi sitä, voit vain periä tämän sivun normaalin järjestelmän sijaan.Web.UI.Page. Menetät ilmeisesti osan tavallisista Viewstate-toiminnoista, kuten salauksen - mutta näiden pitäisi olla helppoja sijoittaa takaisin...Näen tällä hetkellä melko suuria säästöjä ViewState-koossa, kun käytät tätä - BZip2-kompressointia - koska se on koodi, josta valehtelin..., kokeile sitä. Kaikki kommentit / ehdotukset ovat, kuten aina, arvostettuja.
Olen tehnyt testiprojekti tämän kanssa leikittelyyn , se on VSNET 2003, siinä on kaikki tarvittava (mukaan lukien pakkaustarvikkeet).
PÄIVITYS: Olen vain tehnyt joitakin testejä tällä...esimerkkinä, käyttäen DataSet asuttu "Select * Northwind DB:n tilauksesta sidottuna oletukseen DataGrid (valitsin tämän olevan kaikkein porsain mahdollinen...), siirryn mielestäni 659984 tavusta 52080 tavuun asti. Säästö on noin 92 prosenttia - mikä on mielestäni aika vaikuttavaa! Olen varma, että tässä on joitakin haittoja (lukuun ottamatta muutamaa lisäsykliä, joita vaaditaan paineluun) - mutta onko olemassa mitään todellista syytä, miksi MS ei anna pakkausvaihtoehtoa ViewStatelle ulos laatikosta - kuka tahansa???
PÄIVITYS: Selvä, niille, jotka ovat arvostelleet koodia...tämä on prototyyppi - vain testatakseni ideaa, aion leikkiä tällä jossain vaiheessa hieman enemmän ja aion katsoa mukaan joitakin hauskoja ominaisuuksia, kuten Denis Bauerin ViewState-katsoja Sisäänrakennettu, eri pakkausjärjestelmät, eri salaus - myös uskomattoman tehokas Kaksikala- lyhyesti sanottuna se on lelu, jota katson ja laajennan nykyistä ViewState-toteutusta.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.