如何在Spring Boot中将Cache-Control标头添加到静态资源中?
如何Cache-Control
在Spring Boot中为静态资源添加HTTP标头?
尝试在应用程序中使用过滤器组件,该组件可以正确写入标头,但Cache-Control
标头会被覆盖。
@Componentpublic class CacheBustingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResp = (HttpServletResponse) resp;
httpResp.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
httpResp.setHeader("This-Header-Is-Set", "no-cache, no-store, must-revalidate");
httpResp.setHeader("Expires", "0");
chain.doFilter(req, resp);
}
我在浏览器中得到的是:
Cache-Control:no-storeThis-Header-Is-Set:no-cache, no-store, must-revalidate
Expires:0
我想要的是:
Cache-Control:no-cache, no-store, must-revalidateThis-Header-Is-Set:no-cache, no-store, must-revalidate
Expires:0
回答:
根据文档,ResourceHandlerRegistry
。这很容易。(我现在没有与此相关的代码。)
在您配置静态资源的地方,只需添加addResourceHandler
方法,它将返回ResourceHandlerRegistration
对象。
在那里您可以使用setCacheControl方法。您要做的是配置和设置CacheControl对象。
,否则您将需要像下面这样。
@Configuration@EnableWebMvc
@ComponentScan("my.packages.here")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").setCachePeriod(0);
}
}
以上是 如何在Spring Boot中将Cache-Control标头添加到静态资源中? 的全部内容, 来源链接: utcz.com/qa/430060.html