2013-04-29 24 views
4

我有一個應用程序範圍內容的大緩衝區,我想保留在內存中。使用Omnifaces讓我們輕鬆完成。使用Omnifaces過期數據<o:cache>

但是,如果我需要過期緩存,似乎沒有辦法做到這一點。如果需要,我可以設置時間屬性,但這似乎並不是解決這個難題的理想答案。

強制更新底層數據的任何建議?

感謝,

Temar

回答

5

但是,如果我需要到期緩存,似乎沒有方法來做到這一點。

在標籤/組件上確實沒有一種方法,但有一種編程方式。

<o:cache key="myCache"> 

    cached content here 

</o:cache> 

然後在後臺bean您可以爲條目中刪除的內容如下:

public void reset() { 
    CacheFactory.getCache(Faces.getContext(), "session").remove("myCache"); 
} 

注意,默認範圍是:「如果你分配一個明確的關鍵是你的緩存條目這個工作最好會話「,所以在這裏使用。如果您使用另一個作用域作爲標籤(如「應用程序」),您可以在支持bean代碼中指定該作用域。

,只要你知道緩存需要被終止(例如,如果一個動作方法更新了一些後臺數據),你可以調用此方法,也可以使一個明確的復位按鈕:

<h:form> 
    <h:commandButton action="#{someBean.reset}" value="Reset cache" /> 
</h:form> 

對於OmniFaces 1.5我們已經計劃爲o:cache標籤添加一個屬性,使其更加簡單明瞭,我們將向我們的展示添加一個示例,以展示如何手動過期條目。

+1

謝謝,Arjan!這是一個理想的解決方案。 – TemarV 2013-05-03 15:28:04

+0

@TemarV不客氣:) – 2013-05-03 18:37:38

相關問題