LoginSignup
10
10

More than 5 years have passed since last update.

Play の Cache を永続化する

Last updated at Posted at 2015-02-05

PlayFramework では、デフォルトで Ehcache というキャッシュライブラリを利用できます。
Ehcache はディスクに永続化する設定となっていないため、例えばセッション情報をキャッシュに保存している場合、ソースを変更してコンパイルが走るとキャッシュが全部削除されログイン状態ではなくなります。

開発時ですのでいちいちログインし直すのが面倒です。そこで、Ehcache の設定ファイルを作成しキャッシュをディスクに永続化してみます。

設定ファイルの配置場所

Ehcache の設定ファイルは以下の順番で検索され、存在するものを利用します。

  1. 設定ファイルの ehcache.configResource に指定されたリソースパス
  2. conf/ehcache.xml ファイル
  3. デフォルトで定義されている ehcache-default.xml

特に気にする必要がなければ、 conf/ehcache.xml に配置するといいでしょう。

永続化する設定

以下の内容で設定ファイルを作成します。よく分からない人はコピペでいいです。 (自分もよく分からない)

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false">

    <!-- ehcache 永続化ファイルのパスを指定 -->
    <diskStore path="user.dir/.ehcache" />

    <!-- diskPersistent="true" で永続化を有効にする (デフォルトは false) -->
    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="false"
            maxElementsOnDisk="10000000"
            diskPersistent="true"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
    /> 

</ehcache>

この内容のファイルを conf/ehcache.xml に配置してサーバを起動すると、 PROJECT_ROOT/.ehcache ディレクトリに Ehcache の永続化ファイルが作成されます。

設定のポイントは以下の 2 点です。

  • <diskStore> タグ
    このタグを作成し path 属性で永続化ファイルを配置するパスを指定します。 user.dir はプロジェクトのルートディレクトリに変換されるようです。
  • diskPersistent 属性
    この項目に true を設定すると、JVM が再起動される際にキャッシュデータを永続化するようになります。

まとめ

Ehcache を永続化する設定についてまとめてみました。
これでいちいちログインしなくても良くなります!ただ、本番環境にて Ehcache を使用する場合で永続化が不要な場合は、設定ファイルが有効にならないように注意しましょう。

10
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10