4
我有一個應用程序範圍內容的大緩衝區,我想保留在內存中。使用Omnifaces讓我們輕鬆完成。使用Omnifaces過期數據<o:cache>
但是,如果我需要過期緩存,似乎沒有辦法做到這一點。如果需要,我可以設置時間屬性,但這似乎並不是解決這個難題的理想答案。
強制更新底層數據的任何建議?
感謝,
Temar
我有一個應用程序範圍內容的大緩衝區,我想保留在內存中。使用Omnifaces讓我們輕鬆完成。使用Omnifaces過期數據<o:cache>
但是,如果我需要過期緩存,似乎沒有辦法做到這一點。如果需要,我可以設置時間屬性,但這似乎並不是解決這個難題的理想答案。
強制更新底層數據的任何建議?
感謝,
Temar
但是,如果我需要到期緩存,似乎沒有方法來做到這一點。
在標籤/組件上確實沒有一種方法,但有一種編程方式。
<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
標籤添加一個屬性,使其更加簡單明瞭,我們將向我們的展示添加一個示例,以展示如何手動過期條目。
謝謝,Arjan!這是一個理想的解決方案。 – TemarV 2013-05-03 15:28:04
@TemarV不客氣:) – 2013-05-03 18:37:38