2016-11-28 6 views
0

どうやらそれは悪い考えかもしれないようですが、コントローラのセッションスコープをコントローラフィールドに保存するために、たとえばユーザデータのキャッシュのような特定のユーザーのために頻繁に要求される情報を取得するためにデータベースにアクセスする必要はありませんか?Grails 3 - スコープ= 'セッション'のコントローラのセッションデータを保存していますか?

この場合、サーバーがコントローラインスタンスにどれくらいの期間保持しているのか不思議です。誰かがブラウザータブを使用しないで1週間開いたままにしておくと、そのセッションのコントローラーインスタンスが無期限にサーバー上のリソースを消費しますか?

答えて

0

このようなコントローラーを使用できますが、代わりに単にキャッシュを使用するだけではどうですか?そこには本当に良いキャッシュがたくさんあります(例えばSpringキャッシュ)。このアプローチよりも拡張性が高いでしょう。

セッション管理(および期限切れの場合)は、アプリケーションコンテナ(Tomcat、JBoss、Websphereなど)によって処理されます。ほとんどの場合、サーバーとのやりとりがなく(URLやページを押すなど)、デフォルトの20分後に期限切れになります。したがって、セッションが期限切れになると、セッションスコープのコントローラインスタンスがクリーンアップと削除の候補になります。

関連する問題