如何在Spring Boot中将Cache-Control标头添加到静态资源中?

如何Cache-Control在Spring Boot中为静态资源添加HTTP标头?

尝试在应用程序中使用过滤器组件,该组件可以正确写入标头,但Cache-Control标头会被覆盖。

@Component

public 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-store

This-Header-Is-Set:no-cache, no-store, must-revalidate

Expires:0

我想要的是:

Cache-Control:no-cache, no-store, must-revalidate

This-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

回到顶部