缓存 – 在Grails中缓存昂贵的Web服务调用的最佳策略

缓存 – 在Grails中缓存昂贵的Web服务调用的最佳策略,第1张

概述我有一个简单的Grails应用程序,需要在用户会话期间多次定期调用外部Web服务(使用界面). 我想缓存这个Web服务响应,但服务的结果会每隔几天更改一次,所以我想缓存一段时间(也许每天刷新). Grails缓存插件似乎不支持“实时”实现,所以我一直在探索一些可能的解决方案.我想知道什么插件或编程解决方案最能解决这个问题. 例: BuildConfig.groovy plugins{ co 我有一个简单的Grails应用程序,需要在用户会话期间多次定期调用外部Web服务(使用界面).

我想缓存这个Web服务响应,但服务的结果会每隔几天更改一次,所以我想缓存一段时间(也许每天刷新).

Grails缓存插件似乎不支持“实时”实现,所以我一直在探索一些可能的解决方案.我想知道什么插件或编程解决方案最能解决这个问题.

例:

BuildConfig.groovy

plugins{    compile ':cache:1.0.0'}

MyController.groovy

def getItems(){    def items = MyService.getItems()    [items: items]}

MyService.groovy

@Cacheable("itemsCache")class MyService {    def getItems() {        def results        //expensive external web service call        return results    }}

UPDATE

有很多好的选择.我决定用Burt建议的插件方法.我已经在上面的代码示例中添加了一个小的更改的示例答案,以帮助他人想要做类似的事情.此配置在24小时后过期缓存.

BuildConfig.groovy

plugins{    compile ':cache:1.1.7'    compile ':cache-ehcache:1.0.1'}

Config.groovy中

grails.cache.config = {    defaultCache {        maxElementsInMemory 10000        eternal false        timetoIDleSeconds 86400        timetoliveSeconds 86400        overflowTodisk false        maxElementsOndisk 0        diskPersistent false        diskExpiryThreadIntervalSeconds 120        memoryStoreevictionPolicy 'LRU'     } }
解决方法 核心插件不支持TTL,但Ehcache插件不支持.见 http://grails-plugins.github.com/grails-cache-ehcache/docs/manual/guide/usage.html#dsl

http://grails.org/plugin/cache-ehcache插件取决于http://grails.org/plugin/cache,但是使用Ehcache替换缓存管理器(因此您需要同时安装)

总结

以上是内存溢出为你收集整理的缓存 – 在Grails中缓存昂贵的Web服务调用的最佳策略全部内容,希望文章能够帮你解决缓存 – 在Grails中缓存昂贵的Web服务调用的最佳策略所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1144111.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存