正确设置HTTP标头以强制缓存JS,CSS和PNG文件

use*_*597 4 jsf glassfish browser-cache servlet-filters

我如何告诉GlassFish服务器,将所有JS,CSS和PNG文件存储到浏览器缓存中以减少HTTP GET请求?

我正在使用JSF和PrimeFaces.

Bal*_*usC 7

只需使用JSF内置资源处理程序.即用<h:outputStylesheet name>,<h:outputScript name><h:graphicImage name>用文件/resources夹,而不是"普通的香草" <link rel="stylesheet">,<script><img>.

<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="images/logo.png" />
Run Code Online (Sandbox Code Playgroud)

这样您根本不需要担心资源缓存.JSF内置资源处理程序已经设置了必要的响应头.到期时间默认为1周.

在Mojarra中,您可以通过以下上下文参数控制到期时间(值以毫秒为单位):

<context-param>
    <param-name>com.sun.faces.defaultResourceMaxAge</param-name>
    <param-value>3628800000</param-value> <!-- 6 weeks. -->
</context-param>
Run Code Online (Sandbox Code Playgroud)

在MyFaces中:

<context-param>
    <param-name>org.apache.myfaces.RESOURCE_MAX_TIME_EXPIRES</param-name>
    <param-value>3628800000</param-value> <!-- 6 weeks. -->
</context-param>
Run Code Online (Sandbox Code Playgroud)

也可以看看: