使用Spring Boot 2缓存和压缩静态资源

时间:2017-11-21 13:19:17

标签: spring caching spring-boot

我有一个Spring Boot 2应用程序,静态资源是:

src 
|-  main
    |-resources 
        |-static
            |-js/myjs.js
            |-style
                |-css/mycss.css

在我的模板文件中:

<link rel="stylesheet" type="text/css" href="/style/css/mycss.css">
<script src="/js/myjs.js"></script>

这很好。

但是我想启用浏览器缓存和gzip传输。为此,我创建了以下WebConfig:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/static/**")
                .addResourceLocations("/static/")
                .setCachePeriod(3600)
                .resourceChain(true)
                .addResolver(new GzipResourceResolver())
                .addResolver(new PathResourceResolver());
    }
}

该应用仍然有效但没有静态内容被缓存或压缩:

enter image description here

知道我做错了吗?

3 个答案:

答案 0 :(得分:2)

server.compression.enabled=true
spring.resources.cache-period=3600

spring boot 2.0 change

spring.resources.cache-period=3600 to spring.resources.cache.period=3600

答案 1 :(得分:2)

使用Spring Boot 2.0.0我正在使用以下配置:

server.compression.enabled=true
spring.resources.cache.cachecontrol.cache-public=true
spring.resources.cache.cachecontrol.no-cache=false
spring.resources.cache.cachecontrol.no-store=false
spring.resources.cache.cachecontrol.must-revalidate=false
spring.resources.cache.cachecontrol.max-age=31536000

答案 2 :(得分:1)

最后,我能够通过简单的应用程序配置解决它:

server.compression.enabled=true
spring.resources.cache-period=3600

WebConfig代码已从项目中删除。

注意:我必须注意Chrome仍显示内容未压缩,但如果我使用Fiddler检查网络流量,则表明所有css和js文件都已压缩。