gpt4 book ai didi

grails - 如何在Grails中设置服务方法缓存

转载 作者:行者123 更新时间:2023-12-02 14:19:24 24 4
gpt4 key购买 nike

我的应用程序有几个服务,它们可以通过httpClient(GET和POST)进行外部调用,这些服务几个月之内不会发生变化,但是速度很慢。使我的应用程序变慢。
澄清:这与将GORM /休眠/查询缓存到我的数据库无关。

如何在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 2.3.11下,Grails Cache Plugin对我来说效果很好。 Documentation非常简洁,但是只是为了向您展示草图...

    我在Config.groovy中使用以下设置:

    grails.cache.enabled = true
    grails.cache.clearAtStartup = true

    grails.cache.config = {
    defaults {
    maxElementsInMemory 10000
    overflowToDisk false
    maxElementsOnDisk 0
    eternal true
    timeToLiveSeconds 0
    }
    cache {
    name 'somecache'
    }
    }

    然后,在服务中,我使用类似以下内容:
    @Cacheable(value = 'somecache', key = '#p0.id.toString().concat(#p1)')
    def serviceMethod(Domain d, String s) {
    // ...
    }

    注意 somecache部分已被重用。同样,在我的情况下,使用 String作为键也很重要。这就是为什么我在 toString()上使用 id的原因。

    也可以将插件设置为使用磁盘存储,但我不使用它。

    如果没有帮助,请提供有关您的问题的更多详细信息。

    关于grails - 如何在Grails中设置服务方法缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26979882/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com