2017-03-27 32 views
2

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

我试过这些应用程序属性,它们没有工作。

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文件,我甚至可以使用BrowserSync之类的功能自动将更改应用到网页上,但为此我需要Tomcat/Spring在开发环境中为静态资源提供服务,而无需点击Build Project。

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

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

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

谢谢

回答

2

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

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

+0

非常感谢你,IntelliJ Idea注册表设置工作!应该在...之前考虑过目标/文件夹干杯! – Seregwethrin

相关问题