サポート > リポジトリ > Appendix > キャッシュ処理の詳細

Wagbyのキャッシュ処理の詳細を説明します。

Wagbyはデータベースから読み込んだ値をメモリ内にキャッシュしています。これによりシステム全体のパフォーマンスを向上させています。

モデルごとにキャッシュを使うかどうかを指定する

モデルごとにキャッシュを有効にするかどうかを指定することができます。 ただし、ワークフローを有効にしたモデルは "データベースのキャッシュを完全に無効にする" をチェックすることはできません。

サイズの設定

アプリケーション全体のキャッシュサイズを指定することができます。

モデルごとにキャッシュサイズを指定することはできません。内部ではオープンソースの ehcache ライブラリを用いており、LRU アルゴリズムによって、よく使われるデータが優先してキャッシュします。

JVMヒープメモリ領域に空きが少なく、キャッシュ用のメモリ領域を確保できない場合に "CacheManager configuration: You've assigned more memory to the on-heap than the VM can sustain, please adjust your -Xmx setting accordingly" というエラーメッセージがコンソールに表示されます。この場合はヒープメモリ領域を増やすか、キャッシュ用のメモリ領域を減らしてください。(ヒープメモリ領域を増やす場合は、指定したサイズよりも大きな物理メモリがあることが前提となります。)

一時ファイル

wagbyapp/temp フォルダに一時ファイルが生成されることがあります。Wagbyアプリケーション停止後であれば、wagbyapp/temp フォルダに残った一時ファイルを手動で削除することができます。

キャッシュの種類と性質

キャッシュは「ストアモデル」と「選択肢」があります。

区分説明Time To LiveTime To Idle
ストアモデル データベースから読み込んだ1データ。スクリプトに関するマニュアルでは「エンティティ」と表記することもある。 600 sec
(10分)
600 sec
(10分)
選択肢 登録、更新、詳細、一覧画面のモデル参照項目で表示される「内容」部の文字列。 無制限 259,200 sec
(72時間)

TTL値とTTI値は、WEB-INF/classes/ehcache.xml で指定しています。

誰かが操作中にキャッシュクリア処理を行なっても問題ありませんか。

Wagbyではジョブ実行時にキャッシュをクリアする指定を行うことができます。または REST API を利用してキャッシュクリアを指示することもできます。

もし誰かが操作途中にキャッシュがクリアされた場合、キャッシュからのデータを取得できなければデータベースから取得するようになっているため、問題ありません。