问题标签 [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.
caching - Grails - 全页缓存
我正在建立一个小型网站,其中只有一个页面需要来自数据库的信息,其余页面是静态的。我怎样才能为那些静态页面实现整页缓存,同时仍然为需要它的一个页面使用默认的分段缓存系统?如果可以的话,我更愿意为所有页面使用相同的站点网格布局。sitemesh 布局仅包含静态内容。
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 的实例 - 它在日志中也可见。
所以在这么长的描述之后提出一个问题:
有人遇到同样的问题并以某种方式解决了吗?
maven - Grails 更新后无法解析类 grails.plugin.cache.Cacheable
我正在将 Grails 从升级2.1.0
到2.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
?这种冗余困扰着我。
grails - 在普通 Groovy 类上使用 Grails 缓存插件注解
是否可以在普通 Groovy 类中的方法上使用 Grails Cache 插件的注释(即:@Cacheable)?该插件的文档没有提到任何关于普通 Groovy 类的内容,并且根据我自己的测试,注释在普通类中使用时没有任何效果。所以我只是想知道是否有办法让注释在普通的 Groovy 类中工作。
当前的替代方法是通过缓存管理器 bean 直接访问方法中的缓存,但最好使用注释代替。
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.+”
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 的自定义实用程序方法