开发期间的资源缓存清除
通过资源,我指的是静态资源,例如样式表、javascript 库、徽标和象形图等。
默认情况下,加载资源时没有任何缓存过期(在最大年龄或其他情况下过期)。之所以如此,是因为资源被假定为静态的,因为它们在 Servlet 容器的生命周期内不会改变。我们从客户端缓存这些资源(Web 浏览器缓存)中受益。
但是,当发布可能包装一组资源的库的新版本时,我们不希望用户被旧版本的资源卡住。通常实现,并且根据规范,资源将自动以库名称和版本作为查询属性后缀。典型的资源将自动输出为:
<link type="text/css" rel="stylesheet" href="/nqp-web/javax.faces.resource/components.css.xhtml?ln=primefaces&v=6.2">
这是通过使用Resource
.
因此,当您发布新版本的库时,您的用户不会被缓存中的旧版本资源卡住。
然而,在开发工作期间,版本并没有增加,但您仍然希望缓存过期,最好是立即过期。
默认实现通常是确保基于 的值javax.faces.PROJECT_STAGE
,特别是DEVELOPMENT
,将 expire 设置为立即。例如,您可以在 Mojarra 中看到ResourceImpl
:
long expiresTime;
if (FacesContext.getCurrentInstance().isProjectStage(Development)) {
expiresTime = new Date().getTime();
} else {
expiresTime = new Date().getTime() + maxAge;
}
日志记录
正如@vrcca 已经提到的,快速搜索of 的用法会isProjectStage
发现,当设置为DEVELOPMENT
.
参考