[英]How to clean cache after a new deployment?
我正在使用JSF2.0 / Primefaces 4.0和JBoss 7開發應用程序。
問題在於,每次我進行新部署(使用.war)時,所有用戶都必須清理其瀏覽器緩存以查看更改(主要是圖像定位)。
我知道瀏覽器會保存頁面的內容以使其運行更快,但是我也知道有一種方法可以控制HTTP參數cache-control
以使其重新驗證頁面。
問題是:如何使客戶端瀏覽器識別出新部署並清除存儲的緩存? 當然,使用JBoss 7。
另外,我不想在每次訪問中都重新驗證緩存,僅當有新的部署時。
那可能嗎?
如果要緩存的是CSS文件,則可以使用此代碼將版本添加到CSS文件中。 這樣,您不必自己維護版本。
<h:outputStylesheet>
@import url('/someFolder/resources/css/page.css?v=${applicationInfoBean.projectVersion}')
</h:outputStylesheet>
其中applicationInfoBean.projectVersion是我自己的bean和返回當前項目版本的方法。
另一種方法是更改ResourceHandlers將資源緩存多長時間的時間。 默認時間是一周。 您可以在Mojarra中進行更改:
<context-param>
<param-name>com.sun.faces.defaultResourceMaxAge</param-name>
<param-value>28800000</param-value> <!-- 8 hours. -->
</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中的構建資源庫機制,該機制支持資源的版本控制。 由於客戶端緩存將在路徑更改時加載給定資源。 這樣,您可以更改資源的版本號,並敦促客戶端重新加載資源,而不必處理任何緩存老化策略。
在SO上有關於此主題的好文章
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.