【问题标题】:CacheControlFilter doesn't work on CSS background imagesCacheControlFilter 不适用于 CSS 背景图像
【发布时间】:2018-12-11 16:34:07
【问题描述】:

我正在使用 OmniFace 2.7 和 Primefaces 6.0。我使用 CacheControlFilter 为所有图像类型设置了 365d 的过期时间(*.jpg | *.jpeg | *.png | *.gif | *.ico)。

此浏览器缓存设置似乎不适用于获取如下 URL 的 CSS 背景图像:

.../playground/javax.faces.resource/images/smiley.jpg.xhtml

同样适用于具有如下 URL 的组合资源文件(CSS 和 JS):

.../javax.faces.resource/LONG-HASH.js.jsf?ln=omnifaces.combined&v=1544138175000

任何解决此问题的提示都会非常有帮助。谢谢

【问题讨论】:

  • 尝试添加这些“复合扩展”吗?
  • 怎么样?这就是我问的原因。
  • 这不是你的明确问题。但我不知道。我自己没有使用它(还)你是如何添加其他扩展的。用同样的方法试试

标签: jsf browser-cache omnifaces


【解决方案1】:

答案在CacheControlFiltershowcasedocumentation中。

重要提示:这个过滤器会自动跳过JSF资源,比如<h:outputScript><h:outputStylesheet>@ResourceDependency等服务的资源,它们的缓存相关的headers就是alreadyResourceHandler 实现控制。在 Mojarra 和 MyFaces 中,默认过期时间为 1 周(604800000 毫秒),可以通过 web.xml 上下文参数配置,其名称和值以毫秒为单位,例如3628800000 6 周:

  • 莫哈拉:com.sun.faces.defaultResourceMaxAge
  • 我的面孔:org.apache.myfaces.RESOURCE_MAX_TIME_EXPIRES

使用此过滤器控制与缓存相关的标头是没有意义的,因为它们无论如何都会被覆盖。

我没有太多要补充的。

【讨论】:

  • defaultResourceMaxAge 和“CacheFilter”选项(参见 BalusC 的链接)都不会影响“复合扩展”的到期。我尝试了两种方法。那么有没有办法控制呢?。
  • 我用 Nginx 解决了这个问题。还是觉得 JSF 里的限制很奇怪。
猜你喜欢
  • 2023-04-04
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多