2012-12-17 37 views
2

當一個項目被放入緩存時,它有一個超時分配給它(顯式調用Put(),或者從緩存配置中隱含)。我想更新/重置每個項目我檢索[調用Get()]上的過期。AppFabric Cache在檢索時更新緩存項目的到期時間嗎?

我是否需要明確地放置/更新項目或將到期時間自動更新爲Now + timeout?

== == UPDATE

貌似意圖是ResetObjectTimeout() method應該被調用。我在文檔中看不到其他過期更新邏輯。

==更新2 ==

在快速測試/實驗ResetObjectTimeout()產生的大量網絡流量,如使用put(),所以它似乎是整個條目被傳送通過網絡只是更新超時。儘管事實上我沒有添加任何新項目,但我試圖用不同數量的每個項目的數據進行測試,並且流量水平確實隨着數據量的增加而增加。

我想更新超時的原因是我希望緩存項在上次使用後的N分鐘內保留在緩存中。我預計這將是一個相當常見的使用模式,爲了實現它,我需要在每次獲取操作時通過網絡重新發送所有數據,這大大降低了使用緩存的好處,例如,限制了可擴展性和性能。

+0

做你的小物件測試ResetObjectTimeout?嘗試使用5 MB的大對象進行測試。由於WCF序列化,一個簡單的消息可能需要很多字節。由於AppFabric接口非常繁瑣,您的perf mab可能會降級。 – Cybermaxs

回答

0

不,因爲它在appfabric中的所有超時都是絕對的。如果你發現,Data.Cache中有一個用於重置超時的方法(實際上它允許你應用一個新的超時而不需要獲取數據,而不是實際上休息)。

根據您的情況,通讀和後寫能幫忙看看here

相關問題