当前位置: 首页 > 知识库问答 >
问题:

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

马胜泫
2023-03-14
@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

共有1个答案

萧晔
2023-03-14

根据文档,resourcehandlerregistry。这很容易。(我现在没有与此相关的代码。)

在配置静态资源的地方,只需添加AddResourceHandler方法,它将返回ResourceHandlerRegistration对象。

在那里可以使用setCacheControl方法。您必须做的是配置并设置一个CacheControl OBEJCT。

@Configuration
@EnableWebMvc
@ComponentScan("my.packages.here")
public class WebConfig extends WebMvcConfigurerAdapter {


   @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").setCachePeriod(0);
    }

}
 类似资料:
  • 我是spring boot架构的新手。它说,为了让索引页面找到像js这样的静态资源,我们需要将其保留在“src/main/resources/static”下。 目录结构: Html文件:src/main/webapp/WEB-INF/jsp/ js文件:src/main/resources/static/js/ 这是我的索引页: 我的Mvc配置类如下: 我找不到原因,为什么找不到我的js文件。

  • 4.1 原生koa2实现静态资源服务器 4.2 koa-static中间件

  • 我的问题很简单。我无法在Spring中加载静态资源,下面是我的配置文件。 dispatcher servlet。xml 网状物xml 我已将js和css文件放入/webapp/resources/css和/webapp/resources/js中。 我知道这个问题已经被解决了很多次,但我无法加载静态资源。我得到405浏览器上没有方法错误。 在网上尝试了所有其他解决方案。请告诉我哪里出了问题。对这些

  • 每个网站都需要静态资源:图片、样式表、网站图标(favicon)等。在这种情况下,您可以在项目的根目录下创建一个名为 static 的目录。 放入 该目录中的每个文件都将被复制到 生成的 build 文件夹中,并保留目录的层级结构。例如,如果您将名为 sun.jpg 的文件添加到 static 文件夹中,则该文件将被复制到 build/sun.jpg 路径。 这意味着: 对于 baseUrl: '

  • 问题内容: 我得到了一个Spring MVC应用程序,该应用程序当前在目录中放置了一堆CSS和JS文件。 我通读了Spring Docs和一些有关如何使用ResourceHandlerRegistry类为模板加载这些文件的教程。我特别认为本教程中的代码段完全适合我的项目结构。 但是我的资源文件上总是显示404。 这是我当前正在使用的Application / Configuration类: 这是我

  • 问题内容: 我想将图像上传到服务器,将它们存储在文件系统(外部服务器)中,然后在我的JSF页面上显示它们。 我想找到这样的东西: 我找到了一些解决方案,但我想知道是否有更好的方法可以做到这一点。 在JBOSS AS 7中配置静态资源(未回答) 在AS7中替换context.xml?在WAR之外访问文件?(没有回答) 我找到了jBoss文档: 静态资源元素 AdminGuide容器配置 任何帮助将不