foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

セッション管理

今までは神経質に考えすぎていたのかもしれない。
これまでセッションは画面遷移の全てについてスタックを使って管理していた。
この方法ではサーバのメモリ消費が激しいことは分かっていたが、アプリケーションの仕様が見えない場合は、こうするしかないと思っていた。

だが、改めて考え直してみると画面というのは以下しかないのではないか?と考えるようになった。

  • 固有画面
  • 共通画面

そして上記に合わせてセッション領域を以下のように設計するのはどうか?

  • 固有画面用セッション
  • 共通画面用セッション(スタック)

このように画面種別によってセッションを領域を分ける。
当然、画面側の実装にて画面種別を定義する必要が出てくる。

class Controller {
    var $sub_page = true;
}

固有画面用セッションは、コントローラが変わったら破棄する。
共通画面用セッションは、画面遷移毎にスタックへプッシュする。
また、初期処理毎にスタックの先頭と現在画面の一致を調べ不一致であれば一致するまでポップする。