2008-11-11 48 views
4

Wicket應用程序序列化並緩存所有頁面以支持有狀態的組件,以及支持後退按鈕以及其他可能的原因。我有一個應用程序使用setResponsePage從屏幕導航到屏幕。在相當短的時間內會話變得相當大,因爲所有先前的頁面都存儲在會話中。大多數情況下,我只需要會話來包含當前頁面,原因很明顯,也許最後2或3頁允許使用瀏覽器的後退按鈕輕鬆導航。Wicket,頁面堆棧和內存使用

我可以強制一個頁面在導航離開後過期,並且我知道我不想用該按鈕返回該頁面的該版本?更一般地說,處理Wicket中會話增長的推薦方式是什麼?

回答

7

http://apache-wicket.1842946.n4.nabble.com/Wicket-Session-grows-too-big-real-fast-td1875816.html

如果您使用頁面上的域對象的負荷,這最終會緊密連接到其他域中的對象,一定要避免系列化這些!

看一看 LoadableDetachableModel包裹domaing對象 數據視圖和IDataProvider域的顯示對象列表

你不可的東西域對象轉換爲元件的實例變量。 你不應該使域對象引用最終爲了在匿名子類中使用它們。 你不應該僅僅將一個域對象列表傳遞給一個ListView。

也許,在你的應用程序類繼承WbeRequestCycle時,您可能獲得的頁映射頁面的生命期的控制......還沒有嘗試過,雖然

+2

該鏈接無法正常工作:/ – krtek 2012-05-22 09:10:05

1

爲了避免會議嗆由於連續堆疊由於會話中的序列化和內存使用堆積,您可以使用可拆卸模型,在每個請求週期開始時使用掛接來安排自己的存儲和恢復,這樣您就可以完全控制包含字節流的模型在會話中不需要的頁面或通過「後退」按鈕導航。