我使用的是OmniFace 2.7和Primefaces 6.0。我使用CacheControlFilter为所有图像类型(*.jpg
|*.jpeg
|*.png
|*.gif
|*.ico
(设置了365d的过期时间。
这种浏览器缓存设置似乎不适用于获得以下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
任何解决这个问题的提示都将非常有帮助。感谢
答案在CacheControlFilter
的展示和文档中。
重要注意:此筛选器自动跳过JSF资源,例如
<h:outputScript>
、<h:outputStylesheet>
、@ResourceDependency
等提供服务的资源。它们的缓存相关头已经由ResourceHandler
实现控制。在Mojarra和MyFaces中,默认过期时间为1周(604800000毫秒(,可以通过具有以下名称和以毫秒为单位的值的web.xml
上下文参数进行配置,例如3628800000
持续6周:
- Mojarra:
com.sun.faces.defaultResourceMaxAge
- MyFaces:
org.apache.myfaces.RESOURCE_MAX_TIME_EXPIRES
使用此筛选器控制与缓存相关的标头是没有意义的,因为它们无论如何都会被覆盖。
我对此没有太多补充。