【问题标题】:Cache and zip static resources with Spring Boot 2使用 Spring Boot 2 缓存和压缩静态资源
【发布时间】:2017-11-21 13:19:17
【问题描述】:

我有一个 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());
    }
}

应用仍然可以运行,但没有缓存或压缩静态内容:

知道我做错了什么吗?

【问题讨论】:

  • ResourceHandler 和 ResourceLocation 都被标记为“静态”这一事实让 Spring 不感到困惑吗?我认为您的逻辑 ResourceHandler “静态”被 url ResourceLocation “静态”绕过。值得尝试修改 ResourceHandler “静态”。
  • 检查请求标头以确保您接受 gzip 压缩的响应。你应该有类似Accept-Encoding: gzip,deflate的东西。
  • 在那里:Accept-Encoding: gzip, deflate, br

标签: spring caching spring-boot


【解决方案1】:

在 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】:
    server.compression.enabled=true
    spring.resources.cache-period=3600
    

    spring boot 2.0变化

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

    【讨论】:

    【解决方案3】:

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

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

    WebConfig 代码已从项目中删除。

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

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2017-03-29
      相关资源
      最近更新 更多