У меня есть несколько классов домена Grails, и я включил кэш второго уровня Hibernate, установив cache: true
в блоке mappings
.
Время по умолчанию timeToIdle
& timeToLive
составляет 120 секунд, т.е. 2 минуты, которые не подходят для производственного использования.
Я хочу изменить эти настройки на 24 часа. Я знаю, я могу обновить это, используя ehcache.xml
конфигурацию, но как я могу это сделать в Grails? В основном, где поместить этот файл в Grails 3?
Нужно ли использовать плагины Grails cache
& ehcache
, как предлагается здесь Лучшая стратегия для кэширования дорогостоящего вызова веб-службы в Grails ?
Хотя после исследования и чтения я смог добиться того же, используя следующий метод в Bootstrap.groovy
:
class BootStrap {
private static final HOURS = 1 * 60 * 60
def init = {
updateEhCacheConfigurations()
}
/**
* Ehcache is used by default by Hibernate 2nd level cache. But the default "timeToIdle" and "timeToLive" time are 2 minutes. This
* method will increase those.
*
* https://github.com/hibernate/hibernate-orm/blob/5.1.16/etc/ehcache.xml#L40
* https://www.ehcache.org/documentation/2.7/configuration/data-life.html
*
* @author Shashank Agrawal
*/
private void updateEhCacheConfigurations() {
CacheManager.getInstance().getConfiguration().getCacheConfigurations().each { String name, CacheConfiguration config ->
log.debug "Updating cache configuration for $name"
config.setTimeToIdleSeconds(8 * HOURS) // 8 hours
config.setTimeToLiveSeconds(24 * HOURS) // 24 hours
}
}
}
Это будет распечатывать журналы, такие как:
2020-01-29 18:13:37.628 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.product.CategorySection
2020-01-29 18:13:37.658 DEBUG com.wizpanda.BootStrap : Updating cache configuration for org.hibernate.cache.spi.UpdateTimestampsCache
2020-01-29 18:13:37.658 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.product.Category
2020-01-29 18:13:37.659 DEBUG com.wizpanda.BootStrap : Updating cache configuration for org.hibernate.cache.internal.StandardQueryCache
2020-01-29 18:13:37.659 DEBUG com.wizpanda.BootStrap : Updating cache configuration for com.wizpanda.user.Role