Amikor a ListView nem az igazi

Az ASP.NET-ben megjelent ListView vezérlő igazi főnyeremény, tud mindent, amit kell, kézbentartható vele a generált HTML kód, ráadásul van hozzá designer támogatás is a Visual Studioban. Csak éppen vízfejűbb, mint bármely más listás adatmegjelenítő vezérlő.

Történt ugyanis, hogy ma hozzá kellett nyúlnom az egyik webalkalmazásunk egyik ASPX oldalához és ha már ott jártam, kicseréltem egy Repeatert ListViewra. Éljen az új vezérlő, ez a jövő, csak jobb lesz nekünk. Hát nem lett. Igen, tudom, ami működik, azon nem szabad változtatni…

Mivel épp azon dolgoztam, hogy az oldal által generált HTML kód minél egyszerűbb és áttekinthetőbb legyen, ezért hamar feltűnt, hogy bizony megnőtt a ViewState. Nem is kicsit. Ráadásul tette mindezt úgy, hogy az egész oldalra ki van kapcsolva a ViewState: EnableViewState=”false”.

Ez kezdett érdekes lenni, hiszen a funkcionalitás nem változott, még a template sem, csak másik vezérlőbe van beágyazva. Letöltöttem Fritz Onion ViewState Decoderét és megnéztem, mi van benne. A ViewState-ben semmi érdekes, ámde a control state-be, ami szintén az __VIEWSTATE rejtett mezőben utazik, bizony került valami a ListView1-től. A control state pedig akkor is ott van, amikor a ViewState ki van kapcsolva. Ez tehát nem bug, hanem feature!

Ezen a felismerésen fellelkesülve elkezdtem méregetni, hogy a különböző vezérlők hogyan viselkednek. Egy táblából válogattam le 145 rekordot és jelenítettem meg különböző vezérlőkben, miközben mértem az oldal és a ViewState méretét. Íme az eredmény:

Page size
(bytes)

Page ViewState length
(character count)

EnableViewState =

true

false

true

false

ListView

185 969

85 785

100 276

92

Repeater

197 324

97 176

100 200

52

DataList

201 065

100 889

100 228

52

DataList RepeatLayout="Flow"

200 121

99 945

100 228

52

GridView

204 048

102 868

101 256

76

A táblázatból az látszik, hogy a ListView szemeteli a legnagyobb ViewState-et még akkor is, ha a ViewState egyébként ki van kapcsolva. Az oldalhoz tartozó 52 karakteres alap ViewState majdnem kétszer akkorára növekszik. Mindez persze csak akkor igaz, ha egyetlen ListView van az oldalon, ha több, akkor példányonként további 40 karakter a sallang.

Persze a másik oldalon ott a ListView óriási előnye: a kézbentartható HTML kimenet. Míg a többi vezérlő span és table tag-ekkel tudta csak beágyazni a template-et, a ListView-nak nincs szüksége ilyen körítésre, tehát csak az kerül a HTML kimenetbe, amit mi beleírunk a sablonokba.

Persze, ha a számokat megnézzük, néhány bájtról, esetleg néhány kilóbájtról beszélünk. Vajon számít ez mondjuk havi sávszélesség szintjén? Kliens vagy szerver oldali sebesség szintjén? A megrendelő gurujával való vitatkozásnál, aki szerint csak az a weboldal lehet jó, aminek minden egyes karakterét kézzel írta valaki Notepad-ben vi-ban?

Ti szoktatok erre figyelni?

 

Advertisements

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s