Http Header设置问题

时间:2016-05-09 05:48:33

标签: java html header

如何在 Http Response 中添加 Cache-Control属性,我正在开发前端完全 JavaScript / Jquery 的代码库,并且结束了一个java我无法在哪里添加&添加什么代码以查看 Cache-Control 设置为 no-cache ,我关注了一些网站链接但仍然没有运气。

  1. 我尝试添加代码 JavaScript ,如下所示,在网页呈现但不能正常工作时动态加载:

    {{1}}

  2. 我尝试在 web.xml 中添加过滤器,但也无效。

  3. 更新

    在这张图片中,我可以看到添加了标题,但js文件仍然被缓存。

    enter image description here

2 个答案:

答案 0 :(得分:0)

使用Java EE6 +,您应该编写带有@WebFilter注释的过滤器,并将HTTP标头设置为响应。这是您可以使用的过滤器。请注意,之后不会覆盖标题。

@WebFilter("/*")
public class HttpHeaderFilter implements Filter {

    @Override
    public void init(final FilterConfig filterConfig) {
        // Nothing to do.
    }

    @Override
    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
        final HttpServletResponse res = (HttpServletResponse) response;

        res.setHeader("cache-control", "private, max-age=" + 60 * 60 * 12);

        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        // Nothing to do.
    }

}

要禁用缓存,您应使用以下标题。

final HttpServletResponse res = (HttpServletResponse) response;
// HTTP 1.1.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0");
// HTTP 1.0.
response.setHeader("Pragma", "no-cache");
// Proxies.
response.setDateHeader("Expires", 0);

答案 1 :(得分:0)

enter image description here

在Pic中,我可以看到添加了标题但仍然缓存了js文件。