【问题标题】:Browser not caching resources (headers set)浏览器不缓存资源(标头集)
【发布时间】:2015-01-16 16:31:44
【问题描述】:

我的 JEE6/JSF/primefaces 应用程序可通过 https 访问(双向 ssl:需要服务器和用户证书)。我希望浏览器缓存资源文件,所以所有 资源带有标头:“Cache-Control:public, max-age=2592000”和“Expires:Fri, 19 Dec 2014 07:46:27 GMT”(现在 + 1 个月)。但是,最近的 FF 和 IE 请求 每个页面上和每次刷新 (F5) 后的所有 js/css/png 文件。以下是我的请求和响应标头。我做错了什么?

Request:            GET /javax.faces.resource/primefaces.css.jsf?ln=primefaces HTTP/1.1
Accept:         text/css, */*
Referer:            https://xxxxx.yy/zz/abc.jsf?type=1
Accept-Language:    en-US
User-Agent:     Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding:    gzip, deflate
Host:           xxxxx.yy
DNT:                1
Connection:     Keep-Alive
Cookie:         ServerID=1845; JSESSIONID=Wmsmxxx!-1754822933

Response:           HTTP/1.1 200 OK
Date:               Wed, 19 Nov 2014 07:37:49 GMT
Server:             Apache
Cache-Control:      public, max-age=2592000
Pragma:             public
Expires:            Fri, 19 Dec 2014 07:46:27 GMT
Last-Modified:      Tue, 13 Nov 2012 10:02:34 GMT
X-Powered-By:       Servlet/3.0 JSP/2.2
X-Powered-By:       JSF/2.0
Keep-Alive:         timeout=15, max=100
Content-Language:   en
Connection:         Keep-Alive
Transfer-Encoding:  chunked
Content-Type:       text/css

【问题讨论】:

    标签: java http jsf caching header


    【解决方案1】:

    这取决于您启用了缓存的请求类型。

    检查以下两个位置以查看缓存中包含的内容 您的 URL 模式必须与静态内容的请求相匹配。

    <filter-mapping>
        <filter-name>cache</filter-name>
        <url-pattern>*.xhtml</url-pattern>
    </filter-mapping>
    

    第二个位置是缓存过滤器本身。 例如如果您有自己的缓存过滤器,请指定正确的静态内容类型。如果您使用的是开箱即​​用的实现,那么我想 web.xml 会将其作为参数。

    if (uri.contains(".js") || uri.contains(".css") || uri.contains(".svg") || uri.contains(".gif")
                    || uri.contains(".woff") || uri.contains(".png")) {
                httpResponse.setHeader("Cache-Control", "max-age=" + maxAge);
            }
    

    以下是我已完成此操作的详细信息:
    https://stackoverflow.com/a/35567540/5076414
    希望这会有所帮助。

    【讨论】:

    • 过去几个小时内,您一直在复制多个问题的答案。请不要那样做。您的每个答案都应该是对所提问题的回答,而不是从以前的答案复制和粘贴。
    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2018-06-27
    • 2013-10-21
    相关资源
    最近更新 更多