【发布时间】:2014-11-17 19:00:04
【问题描述】:
我的应用程序有几个通过 httpClient(GET 和 POST)进行外部调用的服务,这些服务在几个月内不太可能发生变化,但它们很慢;使我的应用程序更慢。 澄清:这不是关于将 GORM/hibernate/查询缓存到我的数据库。
如何在 grails 2.1.0 中缓存这些方法(磁盘上的持久性获得奖励积分...)?
我已经安装了 grails-cache-plugin 但它似乎没有工作,或者我配置错误(很难做到,因为只有 2-5 行要添加,但我已经设法做到了过去)
我也尝试在我的应用程序前面设置一个 nginx 代理缓存,但是当我提交一个稍作更改的表单时,我得到了第一次提交的结果。
任何建议/想法将不胜感激。
编辑:当前解决方案(基于 Marcin 的回答)
我的 config.groovy:(仅缓存部分)
//caching
grails.cache.enabled = true
grails.cache.clearAtStartup = false
grails.cache.config = {
defaults {
timeToIdleSeconds 3600
timeToLiveSeconds 2629740
maxElementsInMemory 1
eternal false
overflowToDisk true
memoryStoreEvictionPolicy 'LRU'
}
diskStore {
path 'cache'
}
cache {
name 'scoring'
}
cache {
name 'query'
}
}
重要的部分是:
- 启动时不清除 (grails.cache.clearAtStartup = false)
- overflowToDisk=true 将所有结果保留在 maxElementsInMemory 上
- maxElementsInMemory=1 减少内存中的元素数量
- 'diskStore' 应该可由运行应用程序的用户写入。
【问题讨论】:
-
缓存插件应该是要走的路。你做了什么没用?
标签: grails caching http-caching