簡體   English   中英

新部署后如何清理緩存?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM