Grails Asset Pipeline不变

时间:2014-04-03 11:19:15

标签: caching grails compilation asset-pipeline

我是Grails的新手,我有一些问题要问谁是Grails的专家。我在项目中使用资产管道作为资源管理。一切都很好,但是有一个问题,无论我的资源文件(scss文件,咖啡脚本文件......)是否发生了变化,每次渲染视图时都会编译资源(在开发和测试环境中)。这使项目运行缓慢。是否有任何解决方案来缓存资产管道中的资源,因此如果没有任何更改,则不会编译资源。谢谢!

1 个答案:

答案 0 :(得分:3)

如果您使用require构建require tree然后在视图中引用树,那么您可以直接排除每次插件预编译的原始资源。例如:

如果grails-app/assets/javascripts/application.js下的需求树为

//= require jquery
//= require app/models.js
//= require_tree views
//= require_self

.coffee

#= require app/models.js
#= require test
#= require_self
#= require_tree .

每次使用require树的视图呈现时,您都不希望models.js进行预编译,然后添加如下配置:

grails.assets.excludes = ["app/models.js"] //app/*js for all resources under app

上面的配置通知插件以避免资源的预编译,并且只有在视图中引用资产并且资产有任何更改时才会编译。

您可以在Usage documentation上找到更多信息,主要是

  

可选地,如果您的资产包括在内,资产可以从处理中排除   要求树。这可以大大减少您的编译时间   资产。

以上配置可以是特定于环境的,只能用于开发和测试。对于生产环境和/或战争,预编译无关紧要。

environments {
    development {
        grails.assets.excludes = ["app/models.js"]
    }
}