【问题标题】:Disable Caching in Tomcat Grails在 Tomcat Grails 中禁用缓存
【发布时间】:2016-10-19 23:12:56
【问题描述】:

我需要在开发过程中禁用缓存。目前,每次对 JS 或 CSS 进行更改时,我都必须重新运行 run-app 命令(这需要 5-10 分钟)。我继承的这个遗留项目正在使用带有嵌入式 Tomcat 的 Grails。

关于在_Events.groovy 文件中的eventConfigureTomcat 挂钩中配置Tomcat 的在线示例:

eventConfigureTomcat = { tomcat ->
}

但我找不到任何有关如何申请cachingAllowed=false 的文档:

<Context className="org.apache.catalina.core.StandardContext"
         cachingAllowed="false">
</Context>

请记住,我是一个完整的 Java 菜鸟 - 只是想找人为我指明正确的方向。

【问题讨论】:

  • 它没有被缓存在浏览器中 - tomcat 正在提供缓存文件。
  • @quindimildev - 是的 - 但是,这是运行嵌入式 tomcat 的 grails - 所以只有 grails 配置文件。

标签: java tomcat grails groovy


【解决方案1】:

您没有指定 Grails 版本。从 2.3 开始,您需要添加 -reloading 例如

grails -reloading run-app

这对我有用并为更改的文件提供服务,只要浏览器实际上是在发出请求而不是自己缓存东西。

在 3.x 中,这可能不再需要,但有用于重新加载的配置选项可能不包括您的 js/css。在文档中搜索“重新加载”以了解详细信息。

【讨论】:

  • 你是我的英雄 - 我使用的是 grails 2.3,所以添加 -reloading 有效(除了我在行尾添加了标志:run-app -reloading
  • 我正在运行 grails 2.2,最近注意到 login.js 不再可访问,即使可以找到我的其他 js。会在这里添加-reloading 帮助吗?在tomcat7服务器上,如果我清除缓存目录,重新启动,然后我发现它可以工作......
【解决方案2】:

对于任何有兴趣的人,这是我所知道的:

eventConfigureTomcat = { tomcat ->
    def context = tomcat.host.findChild(serverContextPath)
    context.cachingAllowed = false;
}

不知道如何测试它,因为这并没有解决缓存问题。

我后来发现 Grails 正在缓存 dev 构建中的文件,社区建议使用 Asset Pipeline Plugin 来更好地处理 revving、uglifying 等。

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 2011-02-21
    • 2023-03-18
    • 2011-01-10
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2014-11-24
    • 2011-09-18
    相关资源
    最近更新 更多