我有一个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());
}
}
该应用仍然有效但没有静态内容被缓存或压缩:
知道我做错了吗?
答案 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文件都已压缩。