キャッシング機能
javaで有名なJCacheやEHCacheなどのように、クライアントでのキャッシングができます。これらは、例えばほとんど変わらないマスタデータを毎回サーバに取得するのではなく、一定期間、メモリもしくはディスクにキャッシングしておき、サーバ負荷を軽減するために利用できます。
まずは、キャッシュという1つの塊をCacheManager.create-cacheメソッドにて作成します。このとき、キャッシュ内の各オブジェクトの生存期限、キャッシュの最大数などを指定できます。最大数を越えた場合は、一番アクセスされていないオブジェクトを破棄します。
|| キャッシュの作成 def cm = {CacheManager.get-instance} def cache1 = {cm.create-cache “cache1”, max-elements-in-cache = 3, expire-idle-time = 1s } || キャッシュ”cache1”にオブジェクト登録 {cache1.set “k1”, {Array}} {cache1.set “k2”, {HashTable}} {cache1.set “k3”, 10} || キャッシュからオブジェクト取得 |
メモリ上にあるキャッシュをディスクへ書き出すには、キャッシュ作成時にpersistent-disk引数にURLを指定しておくと、flushメソッドを実行した場合にディスクへ書き出します。
def cm = {CacheManager.get-instance} def cache = {cm.create-cache “disk-cache”, persistent-disk = {url “file/disk.cache”}} set cache[“k1”] = “val1” set cache[“k2”] = “val2” {cache.flush} || persistent disk |
もうちょっと簡単にキャッシュを利用するために、with-cacheマクロが利用できます。このマクロは、もしキャッシュ内にオブジェクトがなければ、with-cacheの中身が実行され、結果がキャッシュへ格納され、戻り値を返します。キャッシュ内にオブジェクトがある場合、キャッシュから取得した値を戻します。
def v1 = {with-cache “k1” of “cache1” do def v = “test” v } |
パッケージ名:COM.CURLAP.LIB.CACHING