Có, plugin cache-ehcache
chắc chắn hỗ trợ TTL và tất cả các thuộc tính cấu hình bộ nhớ cache được hỗ trợ bởi EhCache. Như đã nêu trong tài liệu, plugin bộ đệm cơ sở thực hiện bộ nhớ cache trong bộ nhớ đơn giản không hỗ trợ TTL, nhưng Cache DSL sẽ chuyển qua bất kỳ cài đặt cấu hình không xác định nào cho nhà cung cấp bộ đệm ẩn.
Bạn có thể cấu hình các thiết lập ehcache bằng cách thêm dòng sau vào Config.groovy
hoặc 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
}
}
Bạn có thể xác minh các thiết lập bộ nhớ cache trong thời gian chạy như sau:
grailsCacheManager.cacheNames.each {
def config = grailsCacheManager.getCache(it).nativeCache.cacheConfiguration
println "timeToLiveSeconds: ${config.timeToLiveSeconds}"
println "timeToIdleSeconds: ${config.timeToIdleSeconds}"
}
Xem EhCache javadoc for CacheConfiguration cho người khác thuộc tính bộ nhớ cache. Bạn cũng có thể bật ghi nhật ký gỡ lỗi chi tiết về bộ đệm ẩn bằng cách ghi lại grails.plugin.cache
và net.sf.ehcache
.
Lưu ý rằng các plugin bộ nhớ đệm của Grails thực hiện trình quản lý bộ nhớ cache của riêng chúng, khác biệt và tách biệt với trình quản lý bộ nhớ cache EhCache gốc. Nếu bạn đã cấu hình trực tiếp EhCache (bằng cách sử dụng ehcache.xml hoặc các phương tiện khác) thì các cache này sẽ chạy riêng biệt với các cache được quản lý bởi plugin Grails.
Lưu ý: Đã có lỗi trong các phiên bản cũ của plugin Cache-EhCache trong đó cài đặt TTL không được đặt chính xác và các đối tượng đã hết hạn sau một năm; điều này đã được sửa trong Grails-Cache-Ehcache 1.1.
Nguồn
2013-01-17 21:04:07
câu hỏi này đã được hỏi một thời gian dài trước đây nhưng thấy https://jira.grails.org/browse/GPCACHEEHCACHE-6 –
@Khi liên kết đó bị hỏng ngay bây giờ – GreenGiant