是的,该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 的 EhCache javadoc 。您还可以通过 logginggrails.plugin.cache
和net.sf.ehcache
.
请注意,Grails 缓存插件实现了自己的缓存管理器,它与本机 EhCache 缓存管理器不同且分开。如果您直接配置了 EhCache(使用 ehcache.xml 或其他方式),那么这些缓存将与 Grails 插件管理的缓存分开运行。
注意:在旧版本的 Cache-EhCache 插件中确实存在一个错误,即 TTL 设置未正确设置并且对象将在一年内到期;这已在Grails-Cache-Ehcache 1.1中修复。