キャッシュ
Play! ではキャッシュを利用するためのインターフェースが提供されており、透過的にキャッシュ機能を扱うことができます。
Play! 本体ではキャッシュサーバーとして Memcached をサポートしており、application.conf
に記述することで利用することが可能です。
Redis 等、他のキャッシュサーバーを利用する場合は別途モジュールが必要となります。
キャッシュサーバーを利用しない場合、Java ヒープメモリにオブジェクトが保持されることになるため、クラスタ環境での利用に注意してください。
キャッシュ API
Cache クラスを利用します。
// キャッシュからオブジェクトを取得する
User user = Cache.get("user_" + id, .class);
// キャッシュにオブジェクトをセットする、キャッシュ有効期間を指定可能
Cache.set("user_" + user.id, user, "30mn");
// キャッシュからオブジェクトを削除する
Cache.delete("user_" + user.id);
セッションとキャッシュの関係
通常 Web アプリケーションを開発している場合、セッション情報をキャッシュしたくなるケースがあります。 (例えば画面で入力された内容を確認画面で表示する、といったケース)
しかし Play! ではセッションの管理手法として Cookie を採用しているため、 Cookie で保持可能なサイズまでしかセッション情報として格納することができません。 これは Play! の特徴でもあるステートレス MVC を実現するためのアプローチでもあります。
そのため、Play! ではキャッシュ API を利用して、セッションに紐づく情報をキャッシュする方法を推奨しています。 例えば以下の様に、セッションのIDをキーとしてキャッシュにセットします。
Cache.set(session.getId(), inputedUser);