问题标签 [grails-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
318 浏览

caching - Grails - 全页缓存

我正在建立一个小型网站,其中只有一个页面需要来自数据库的信息,其余页面是静态的。我怎样才能为那些静态页面实现整页缓存,同时仍然为需要它的一个页面使用默认的分段缓存系统?如果可以的话,我更愿意为所有页面使用相同的站点网格布局。sitemesh 布局仅包含静态内容。

0 投票
1 回答
415 浏览

caching - Grails 应用程序中的 grails-cache-ehcache 插件,用于使用 @Cacheable 注释进行缓存

我的情况是我有 Grails 2.1.2 应用程序,并希望使用缓存插件缓存-ehcache 插件作为实现来引入方法级缓存。

我的缓存配置为像这样在内存中:

我有一个像这样的方法,它只需要 int 参数,所以密钥生成不是问题:

我的问题java.lang.OutOfMemoryError: Java heap space是调用此方法时出现异常。原因是 ehcache 使用一个名为 ObjectGraphWalker 的类计算将要放入缓存的对象的大小,该类遍历对象图并对大小求和。

我为 ehcache 设置了调试级别日志记录,并看到大量与这些类似的行:

很明显,它遍历了一堆元类,这导致它到其他元类结束上帝知道在哪里......

Ehcache 有一种机制来配置这里描述的这种计算大小:http: //ehcache.org/documentation/configuration/cache-size#built-in-sizing-computation-and-enforcement

最近我发现从 2.8 版本开始(我使用 2.8.1)还有一个用于此配置的编程 API,您可以使用此库进行设置:https ://github.com/Terracotta-OSS/ ehcache-sizeofengine

有一个针对 Groovy 的这种大小的引擎的实现,它应该解决元类遍历。我已经尝试过了,恕我直言,它不起作用 - 它的核心是这个过滤器:

我认为问题在于 groovy 对象中的 metaClass 字段不是 MetaClass 的实例 - 它在日志中也可见。

所以在这么长的描述之后提出一个问题:

有人遇到同样的问题并以某种方式解决了吗?

0 投票
1 回答
1866 浏览

maven - Grails 更新后无法解析类 grails.plugin.cache.Cacheable

我正在将 Grails 从升级2.1.02.3.7. 我有一个基于 Maven 的项目。因为2.1.0命令mvn clean install运行没有错误。因为2.3.7它给出了:

我尝试了最新版本的 Grailscache插件 -1.1.1以及与 Grails 配合使用的插件2.1.0,即cache 1.0.0. 错误是一样的。

我检查了这个文件CacheService.groovy的外观,它确实有这两个导入并且似乎需要它们。我检查了cache插件 zip 是否已下载到.m2文件夹。

我像这样包含cache插件pom.xml

当我运行grails compile时也没有错误,您也可以使用grails run-app. 但是让它在 Maven 中工作会很好,就像以前一样。你能帮我解决这个问题吗?

我还有一个额外的问题可能会让我了解正在发生的事情:如果我使用 Maven,依赖项BuildConfig.groovy仍然重要吗?我应该删除它们吗?因为现在我们在项目中有两组依赖项要维护,而且看起来不太合适。

编辑:

BuildConfig.groovy看起来像这样:

但它是否完全用于 Maven 构建?如果是这样,为什么我必须在 ? 中包含插件pom.xml?这种冗余困扰着我。

0 投票
1 回答
459 浏览

grails - 在普通 Groovy 类上使用 Grails 缓存插件注解

是否可以在普通 Groovy 类中的方法上使用 Grails Cache 插件的注释(即:@Cacheable)?该插件的文档没有提到任何关于普通 Groovy 类的内容,并且根据我自己的测试,注释在普通类中使用时没有任何效果。所以我只是想知道是否有办法让注释在普通的 Groovy 类中工作。

当前的替代方法是通过缓存管理器 bean 直接访问方法中的缓存,但最好使用注释代替。

0 投票
1 回答
351 浏览

spring - 在普通 Spring Service Bean 上使用 Grails 缓存插件

我在一个单独的 jar 库中有一些标准的 Spring @Service 类,它们使用标准的 @Cacheable Spring 注释,在 Spring 引导项目中我声明了依赖项,配置了 CacheManager 并且可以正常工作!

我尝试在 Grails 3.1 项目中做同样的事情,但没有运气!我发现https://github.com/grails-plugins/grails-cache需要使用其“专有”@Cacheable 注释:

http://grails-plugins.github.io/grails-cache/3.0.x/api/grails/plugin/cache/Cacheable.html

作为解决方法,我分叉了一些服务,只是为了使用 Grails @Cacheable 并且它正在工作,但我希望有一个在 grails 下工作的 @Service !


我错误配置了一些东西,它的行为方式不同,但我不知道它是什么!

我想在 spring only 和 grails 项目之间共享这个 jar 库,但到目前为止,我无法进行缓存工作,除非我在 grails-app/services 目录下分叉服务类并使用“专有”@Cacheable 注释;

我尝试删除插件并使用 org.springframework.context.annotation.Bean 注释在 /GPsGrails3/grails-app/init/gpsgrails3/Application.groovy 中配置 bean 和缓存:

我将 signatureService 放在 grails-app/services 目录下:/GPsGrails3/grails-app/services/it/finmatica/ifw/impl/SignatureService.groovy

也许我必须在 /GPsGrails3/grails-app/conf/spring/resources.groovy 中配置我的 bean?

我必须使用插件的版本 4?编译“org.grails.plugins:cache:4.+”

0 投票
1 回答
74 浏览

maven - Grails 2.4.5 错误 net.sf.ehcache.CacheException:javax.management.MalformedObjectNameException 属性值部分中的无效字符“:”

运行 Grails 2.4.5 项目时出现以下错误(完整堆栈跟踪)

我不确定是什么导致了错误,我得到了一个成功的“maven clean/package/install”。但是,在执行“grails compile”时,我从 cache-ehcache 插件中收到了一个不推荐使用的警告(如下所示),我假设这可能是我收到此错误的原因,但不确定如何解决它。

我会尝试看看是否有该插件的更高版本。到目前为止,我大部分时间都被限制在一个 nexus 镜像存储库中,所以我无法找到更高版本来测试。

我的 pom.xml 中有示例依赖项

根据一个未解决的问题https://github.com/grails-plugins/grails-cache-ehcache/issues/41,这可能是一个错误,但没有提供解决方案或解决方法。

我正在从 Grails 2.2.0 升级到 2.4.5,我更新了 Datasource.groovy 以指出正确的 hibernate4 ehCache 类:

}

配置.groovy:

我试图了解这MalformedObjectNameException: Invalid character ':' in value part of property是从哪里来的,因为该项目没有配置任何 ehcache,它只是使用了缓存插件中的一些类。下面是一个示例缓存服务实现:

GrailsEhCacheCache 无法被 IntelliJ 识别 GrailsCacheManager 无法被 IntelliJ 识别

更新:用于创建 EHcache 的自定义实用程序方法