【问题标题】:Spring Boot or Tomcat cache static assets, have to re-build every time to refreshSpring Boot 或 Tomcat 缓存静态资产,每次刷新都要重新构建
【发布时间】:2017-03-27 11:43:55
【问题描述】:

Spring Boot 或 Tomcat 在开发环境中缓存我的静态资产 .js 和 .css 文件,我每次都必须构建 -> 构建项目(在 IntelliJ 中)才能获得刷新的版本。

我尝试了这些应用程序属性,但它们不起作用。

spring.resources.cache-period=0
spring.resources.chain.cache=false
spring.resources.chain.html-application-cache=false
spring.resources.chain.strategy.content.enabled=false
spring.resources.chain.strategy.content.paths=/**

我试图用这个 bean 来配置 Tomcat,但效果不佳:

@Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory() {

            @Override
            protected void postProcessContext(Context context) {
                final int cacheSize = 0;
                StandardRoot standardRoot = new StandardRoot(context);
                standardRoot.setCachingAllowed(false);
                standardRoot.setCacheMaxSize(cacheSize);
                context.setResources(standardRoot);    
            }
        };
        return tomcatFactory;
    }

当更改 js 和 css 文件时,我不想每次都进行 Build Project,我什至可以使用 BrowserSync 之类的东西自动将更改应用到网页,但为此我需要 Tomcat/Spring 来在 dev 中提供静态资源没有我点击构建项目的环境。

该文档并没有真正的帮助,根据该文档,除了每次更改 css 或 js 文件时单击“构建”之外别无他法。 http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-hotswapping

但我相信这应该是一件非常简单且完全可以实现的事情,不是吗。

有什么想法我接下来应该尝试什么?

谢谢

【问题讨论】:

    标签: java spring spring-mvc tomcat spring-boot


    【解决方案1】:

    这没有缓存。当您在单独的文件夹(例如target)中构建项目时,会复制您的源文件(*.js*.css),然后将它们发送到浏览器。 Build Project 按钮复制了此文件,然后您会看到它们已更改。

    您可以在 IntelliJ 中启用Build project automatically 选项或使用其他工具(例如bower)在更改后复制文件。

    【讨论】:

    • 非常感谢,IntelliJ Idea 注册表设置成功了!!!之前应该考虑过那个目标/文件夹......干杯!
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2023-03-04
    • 2013-04-01
    • 2022-07-23
    • 2021-11-25
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多