HttpSessionの使用方法について考える

HttpSessionはとても便利でついつい多用してしまいがちです。
しかし間違って膨大な検索結果等(これに限らず巨大なオブジェクト)をHttpSessionに入れてしまった日にはサーバのメモリを圧迫してしまいパフォーマンスの低下は免れません。
removeAttributeですぐ削除すればよいですが削除する前にブラウザを閉じられたりするとどうしようもないわけです。

パフォーマンスに関してはこちらのブログが詳しく説明してくれています。

結局使用しないのが一番なんでしょうが、正直なところ画面によってはHttpSessionが使用できないことで実装するのがとても大変になったり別のデメリットがでてくることもあります。

このHttpSessionに関するやり取りでも触れてるようにHttpSessionの代わりhiddenフィールドを使うことによるセキュリティのリスクもあります。


やはり設計方針をきちんと定めセキュリティ上問題のある箇所でのみ使用するとか画面デザインによって止むを得ないシチュエーションでのみ使用するなどと決めるのが一番なのかも。
他の対策として極力タイムアウトの時間を短く調整するといったところでしょうか。
もちろんログイン情報等は例外でHttpSessionで管理すべきでしょうけど。


明確な答えは出せませんが、今後も代替案を含めて調査していきたいと思います。