【发布时间】: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