如何在 Grails 资产管道控制器操作上放置 @Cacheable 注释?

How do I put @Cacheable annotation on Grails asset pipeline controller action?

我有一个配置有默认“:cache:1.1.8”插件的 Grails 2.4.4 项目。它还使用默认的“:asset-pipeline:1.9.9”插件。

当 运行 应用程序时,我在日志中看到这条 DEBUG 消息:

DEBUG simple.MemoryPageFragmentCachingFilter - No cacheable annotation found for GET:/PROJECTNAME/grails/assets/index.dispatch [controller=assets, action=index]

如何让这条消息消失?我的意思不是通过过滤日志文件,我的意思是为资产管道控制器放置一个可缓存的注释,或类似的东西。

更新: 事实证明,由于 sass-asset-pipeline 中的缺陷,我收到了数十条 DEBUG 日志消息,而不是一条: 1.9.0.

我更新到 sass-asset-pipeline:1.9.1,因为他们说他们在此处修复了 1.9.1 中的一些缓存问题: https://github.com/bertramdev/sass-grails-asset-pipeline/issues/11

你不想。缓存响应和方法调用应该使用与缓存静态资源截然不同的逻辑。

通常静态资源很少更改并永远缓存,但使用唯一名称或其他一些机制,因此如果您确实更改了 CSS/JS/etc。文件,您可以让客户使用新版本。

但缓存服务方法调用和控制器响应通常更短暂,因为数据库更新通常会触发缓存失效和刷新以确保使用正确的数据。

asset-pipeline 插件及其附加插件对智能缓存有很好的支持,你应该在那里管理它,但不要滥用缓存插件。