はい、cache-ehcache
プラグインはTTLと、EhCacheでネイティブにサポートされているすべてのキャッシュ構成プロパティを確実にサポートしています。ドキュメントに記載されているように、ベースキャッシュプラグインはTTLをサポートしない単純なメモリ内キャッシュを実装しますが、キャッシュDSLは不明な構成設定を基になるキャッシュプロバイダーに渡します。
Config.groovy
またはに以下を追加することで、EhCache設定を構成できますCacheConfig.groovy
。
grails.cache.config = {
cache {
name 'mycache'
}
//this is not a cache, it's a set of default configs to apply to other caches
defaults {
eternal false
overflowToDisk true
maxElementsInMemory 10000
maxElementsOnDisk 10000000
timeToLiveSeconds 300
timeToIdleSeconds 0
}
}
次のように、実行時にキャッシュ設定を確認できます。
grailsCacheManager.cacheNames.each {
def config = grailsCacheManager.getCache(it).nativeCache.cacheConfiguration
println "timeToLiveSeconds: ${config.timeToLiveSeconds}"
println "timeToIdleSeconds: ${config.timeToIdleSeconds}"
}
その他のキャッシュプロパティについては、CacheConfigurationのEhCachejavadocを参照してください。grails.plugin.cache
ロギングとを使用して、キャッシュの詳細なデバッグロギングを有効にすることもできますnet.sf.ehcache
。
Grailsキャッシングプラグインは、ネイティブのEhCacheキャッシュマネージャーとは異なり、別個の独自のキャッシュマネージャーを実装していることに注意してください。EhCacheを直接(ehcache.xmlまたは他の手段を使用して)構成した場合、これらのキャッシュはGrailsプラグインによって管理されるキャッシュとは別に実行されます。
注:古いバージョンのCache-EhCacheプラグインには、TTL設定が正しく設定されておらず、オブジェクトが1年で期限切れになるというバグが実際にありました。これはGrails-Cache-Ehcache1.1で修正されました。