2011-06-21 3 views
4

私のアプリケーションでは、ユーザー固有のセッションで現在Webアプリケーションにアクセスしているユーザーに特有の大量のデータをメモリに保存したいと考えています。私が知っている限り、プレー・フレームワークは、セッション・データを格納するためにクッキーを使用しますが、これには4kの制限があります。セッションデータをもっと大きくするにはどうすればいいですか? ehacache memcacheはここで助けますか?このセッションには、ユーザーの最後のアクティビティからの有効期限があります。クライアントクッキーによるフレームワークセッションの再生

答えて

4

セッションデータがキャッシュ可能であれば、キーをuseridとしてキャッシュに保存し、ユーザーがログオフするとクリアする方がよいでしょう。関連するDBの更新/削除については、DBからリロードしてください。 memcacheのような外部キャッシュにコンテンツを保持すると、拡張性に役立ち、必要に応じて長期的に分散キャッシュに移行することができます。この興味深い記事をShare Nothingで確認してください。

2

Playのアイデアは、セッションの必要性を払拭し、多くの情報をメモリに保存することです。メモリ内のアプローチの問題は、データを保持している特定のサーバーにユーザーを結び付けることです。プレイの共有は何もしないというアプローチは、固定セッションなどを心配することなく簡単に水平方向に拡張できることを意味します。

あなたが持っているオプションは です - ユーザーセッションの他の一意のidenifierまたはuserIdを介してアクセスできる一時データベースに一時データを格納します。このデータベースは、サーバー側のセッションと同等です。 - キャッシュを使用します。しかし、キャッシュの考え方は、情報がキャッシュになければ、その情報をデータベース(または他のソース)から取り出すことができるということです。キャッシュは、データが利用可能であることを保証する必要はありません。ロードバランスされたサーバーセットを使用している場合、インメモリキャッシュ(ehcacheなど)の場合は、すべてのリクエスタが同じサーバーに戻ってくることを保証できないことがあるため、キャッシュ内のデータを使用できない場合があります特定のセッションのすべてのサーバー。

あなたの質問に対する答えは、使用状況によって異なりますが、データベースは、あなたが提供した情報に基づいた最良のアプローチです。

+0

最初の文で何かが間違っていましたが、わかりません。 –

+0

ありがとうございます。 iPadの自動修正が得られるために、私は間違った手紙をタップしたに違いありません。 – Codemwnci

関連する問題