Wicket je jedním z nejznámějších webových
frameworků v jazyce Java. Práce s ním je zábavná a
efektivní. To ale nemění nic na tom, že je potřeba
trochu vědět, co děláme a na pár věcí dávat pozor. O
některých z nich bude tento text.
Přidáme-li do stránky nějakou stavovou komponentu
(např. Link) nebo AJAX behavior, musíme mít na
paměti, že Wicket na konci http požadavku ukládá
instanci stránky i s celým komponentovým stromem do
first level cache – http session. Což při nedodržení
určitých zásad může vést až k tomu, že se velikost
session pohybuje v řádech megabajtů. V session se
drží stránky pouze z posledního request cyklu, ale
aby v prohlížeči fungovalo tlačítko zpět, ukládá se
stránka v serializované podobě (pole bajtů) také do
second level cache (společné pro celou aplikaci) a
zároveň do perzistentního úložiště na filesystém nebo
do databáze. Při dalším http požadavku se Wicket
pokusí najít stránku v session a pokud se mu to
nepodaří, pokračuje v second level cache a
perzistentním úložišti. Získání stránky ze second
level cache je pomalejší než ze session, protože musí
dojít k deserializaci, ale rychlejší než z
perzistentního úložiště, protože jsou data držena v
paměti. Na konci požadavku je first level cache opět
přepsána novou instancí stránky a takto pořád dokola.