4

Wicket アプリケーションは、すべてのページをシリアライズしてキャッシュし、ステートフル コンポーネントをサポートしたり、戻るボタンをサポートしたりするなどの理由が考えられます。setResponsePage を使用して画面間を移動するアプリケーションがあります。以前のすべてのページがセッションに保存されるため、非常に短い時間でセッションがかなり大きくなります。ほとんどの場合、セッションに必要なのは現在のページだけです。これには明らかな理由があります。ブラウザの戻るボタンを使用して簡単に移動できるようにするために、おそらく最後の 2 ページまたは 3 ページが必要です。

別のページに移動した後、そのバージョンのページに戻るボタンを使用したくないことがわかっている場合、そのページを強制的に期限切れにすることはできますか? より一般的には、Wicket でのセッションの増加に対処するための推奨される方法は何ですか?

4

2 に答える 2

7

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

ページで多数のドメイン オブジェクトを使用し、最終的に他のドメイン オブジェクトと密結合する場合は、これらのシリアル化を避けるようにしてください。

ドメインオブジェクトのリストを表示するためのドメインオブジェクトDataViewとIDataProviderをラップするためのLoadableDetachableModelを見てください

ドメイン オブジェクトをコンポーネントのインスタンス変数に詰め込むべきではありません。匿名サブクラスで使用するために、ドメイン オブジェクト参照を final にしないでください。ドメイン オブジェクトの単なるリストを ListView に渡してはなりません。

おそらく、Application クラスで WbeRequestCycle をサブクラス化すると、ページマップでページの有効期間を制御できるようになるかもしれませんが、まだ試していません。

于 2008-12-07T11:30:00.453 に答える
1

セッションのシリアル化とメモリ使用量の積み上げによるバイトストリームの継続的なスタッキングによるセッションチョークを回避するために、フックを使用して分離可能なモデルを使用して、各リクエストサイクルの開始時に独自のストレージと復元を手配できます。セッションで不要なページのバイトストリームを含むモデル、または「戻る」ボタンでナビゲートできるモデルを完全に制御する方法。

于 2011-06-20T11:40:10.643 に答える