【问题标题】:Enable browser caching in JSP在 JSP 中启用浏览器缓存
【发布时间】:2012-08-14 09:47:30
【问题描述】:

如何定义可缓存页面的内容?我正在使用 Google Chrome 审核功能,它告诉我:

The following resources are explicitly non-cacheable. Consider making them cacheable if possible.

我创建了一个新的Filter,每个请求都会调用它:

public class CachingFilter implements Filter {

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    HttpServletResponse httpResponse = (HttpServletResponse) response;

        httpResponse.setHeader("Cache-Control", "private");
        httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // one week
        httpResponse.setDateHeader("Max-Age", System.currentTimeMillis() + 604800000L);

        chain.doFilter(request, response);
    }
}

Filter 适用于所有 JavaScript 文件,因为它们不再出现在 Google 审核工具中。但我仍然得到一个图像列表和主 JSP 文件。我还必须设置哪些其他标头才能为它们启用缓存?

这是图片的Request-Header

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:entries=20; JSESSIONID=fSSOjMOknqW4yk0bH1Nxy2Ea.undefined
Host:localhost:8080
If-Modified-Since:Mon, 13 Aug 2012 12:52:32 GMT
If-None-Match:W/"1685-1344862352945"
Referer:http://localhost:8080/SSIS2_JBoss7/View/PackageManagement/Packages.jsp
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1

还有图片的Response-Header

Cache-Control:private
Date:Thu, 16 Aug 2012 08:33:05 GMT
ETag:W/"1685-1344862352945"
Expires:Thu, 23 Aug 2012 08:33:05 GMT
Max-Age:Thu, 23 Aug 2012 08:33:05 GMT
Pragma:No-cache

【问题讨论】:

  • 您确定 Chrome 审核引用的是 JSP 文件本身,而不是由 JSP 生成的 HTML 输出引用的 CSS/JS/图像资源吗?如果是后者,那么您显然需要在这些资源的响应上设置标头,而不是在 JSP 的响应上。
  • 是的,Chrome 审核指的是 JSP 文件、图像(png、gif)、JavaScript 文件和 CSS 文件。

标签: jsp http-headers jboss7.x browser-cache developer-tools


【解决方案1】:

我必须添加这一行以缓存所有图像和主 JSP 文件:

httpResponse.setHeader("Pragma", "private");

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2016-12-31
    • 2020-03-28
    相关资源
    最近更新 更多