项目使用springboot+thymeleaf,但是需要在win7(09版)的ie8上跑,页面的静态资源不缓存的话,会造成网络访问带宽过大,测试发现,只有小于等于springboot2.2.0.RELEASE版本,也就是spring小于等于5.2.0.RELEASE版本能支持,但是漏洞太多,不能使用,有没有大神知道大于这个版本的springboot怎么配置才能让ie8能缓存静态资源,下面是对比图;用>2.2.0.RELEASE版本的静态资源,比如图片就是不进缓存文件夹,用<=2.2.0.RELEASE版本的则正常,比如图中ie8缓存了th.jpg这张图
所以想知道在新版的springboot版本中如何配置,才能让静态资源在ie8中缓存
在Spring Boot 2.2.0.RELEASE及更高版本中,Spring Boot 默认的静态资源处理通常不会直接阻止IE8缓存静态资源。然而,由于IE8对HTTP缓存控制头的支持有限,以及Spring Boot和底层Servlet容器的默认行为,可能会影响到资源的缓存行为。
以下是一些步骤和配置,可以帮助你确保在Spring Boot > 2.2.0.RELEASE版本中静态资源能被IE8缓存:
你可以通过实现WebMvcConfigurer
接口来自定义静态资源的HTTP缓存头。这允许你设置如Cache-Control
和Expires
这样的HTTP头,这些头可以被IE8理解并使用以缓存资源。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.time.temporal.ChronoUnit;
@Configuration
public class StaticResourceConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 配置静态资源位置及缓存策略
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/")
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String path,
Resource requestedResource) throws IOException {
// 可以添加自定义资源解析逻辑,这里不修改
return requestedResource;
}
})
.cacheControl()
.cachePublic()
.maxAge(30, ChronoUnit.DAYS); // 设置缓存时间为30天
}
}
Spring Boot通常使用Tomcat、Jetty或Undertow作为Servlet容器。这些容器在配置静态资源时通常遵循Servlet 3.0规范。确保你的pom.xml
或build.gradle
中使用的Servlet容器版本是支持IE8缓存头的。
使用开发者工具(如IE8的开发人员工具或通过Fiddler、Wireshark等网络抓包工具)来检查静态资源请求和响应的HTTP头。确保Cache-Control
和Expires
头被正确设置,并且IE8能够识别这些设置。
如果上述方法仍然不能解决问题,考虑使用CDN(内容分发网络)来缓存静态资源,或者开发一个专门的缓存层来管理这些资源。
通过上述步骤,你应该能够在Spring Boot > 2.2.0.RELEASE版本中配置静态资源以支持IE8的缓存。如果问题依旧存在,可能需要更深入地调查具体的网络请求和响应行为。
我试图用1.5.15.release版本在Spring Boot项目中配置LettuceConnectionFactory。
为优化站点性能,静态资源应该带有恰当的'Cache-Control'值与其他必要的头。配置一个ResourceHttpRequestHandler处理器服务静态资源请求不仅会读取文件的元数据并填充'Last-Modified'头的值,正确配置时'Cache-Control'头也会被填充。【这段翻得还不是很清晰】 你可以设置ResourceHttpRequestHandler上的cachePerio
本文向大家介绍如何在nginx中配置缓存静态文件,包括了如何在nginx中配置缓存静态文件的使用技巧和注意事项,需要的朋友参考一下 这篇教程说明你应该怎样配置 nginx、设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片、 CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件。这样能节省带宽,并且在访问你
Glassfish 3.1.2,Mojarra 2.1.6,SSL已激活 也是一篇关于资源缓存的好文章。在我们的应用服务器中,SSL被激活。我们看到静态资源(图像、脚本、css)没有缓存。 下面是我的测试筛选器: 过期:确定。它是一个静态资源,不会改变,因此我们将到期日期设置在未来的一个月。 上次修改:不确定。我读到,将此设置为过去也会影响缓存 缓存控制:OK。允许安全缓存。安全影响? 此设置是否
问题内容: 我想将图像上传到服务器,将它们存储在文件系统(外部服务器)中,然后在我的JSF页面上显示它们。 我想找到这样的东西: 我找到了一些解决方案,但我想知道是否有更好的方法可以做到这一点。 在JBOSS AS 7中配置静态资源(未回答) 在AS7中替换context.xml?在WAR之外访问文件?(没有回答) 我找到了jBoss文档: 静态资源元素 AdminGuide容器配置 任何帮助将不
本文向大家介绍SpringBoot静态资源路径配置及主页显示,包括了SpringBoot静态资源路径配置及主页显示的使用技巧和注意事项,需要的朋友参考一下 静态资源路径 静态资源支持放在以下路径中,访问优先级从上到下: classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ # 默认路径 classpath:/