jsf - 正确设置 HTTP header 以强制缓存 JS、CSS 和 PNG 文件

标签 jsf glassfish servlet-filters browser-cache

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

我正在使用 JSF 和 PrimeFaces。

最佳答案

只需使用 JSF 内置资源处理程序。 IE。使用 <h:outputStylesheet name> , <h:outputScript name> <h:graphicImage name> 文件位于 /resources文件夹而不是“普通 Vanilla ”<link rel="stylesheet"> , <script><img> .

<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="images/logo.png" />

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

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

<context-param>
    <param-name>com.sun.faces.defaultResourceMaxAge</param-name>
    <param-value>3628800000</param-value> <!-- 6 weeks. -->
</context-param>

在 MyFaces 中:

<context-param>
    <param-name>org.apache.myfaces.RESOURCE_MAX_TIME_EXPIRES</param-name>
    <param-value>3628800000</param-value> <!-- 6 weeks. -->
</context-param>

另请参阅:

关于jsf - 正确设置 HTTP header 以强制缓存 JS、CSS 和 PNG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389842/

相关文章:

string - 如何在 JSF 中的 EL 表达式 #{ } 中写入硬编码字符串值?

java - 使用 PrimeFaces 从 Selectiomenu 获取值

java - JSF Facelet 验证条件是否为真

java - 从静态 html/css/js Web 应用程序和 .ear 容器生成 .war 文件

java - 尝试通过 glassfish(使用 Cargo 和 Maven)设置/使用 mysql 数据源。如何部署mysql连接器?

java - Wicket:避免 302 重定向到主页

java - 重构JSP页面

ssl - Glassfish 3 : HTTPS request on HTTP listener hangs

java - Tomcat:@Overriden 日志过滤器混合输出及其非覆盖变体

java - HttpServletRequest.getSession(true) 线程安全吗?