2016-12-25 29 views
1

我正在尋找在我的UWP應用程序中實現緩存,但我無法找到System.Runtime.Caching,我看着msdn https://msdn.microsoft.com/en-us/library/mt185505.aspx找不到此引用。這是UWP支持的嗎?如果不是什麼替代方案?我看了其他類似的問題,但沒有找到任何可行的答案No System.Runtime.Caching available?在UWP中沒有system.runtime.caching

+0

Microsoct.Extensions.MemoryCache不工作在UWP上嗎?您也可以使用應該工作的CacheManager,在Dictionary basec緩存中構建或使用Microsoft擴展應該完全工作我猜 – MichaC

+0

我無法在我的UWP項目中引用Microsoft.Extensions.Caching.Memory.dll。我可以使用字典,但我需要有一些關鍵值對到期,例如共享訪問signatutre在一段時間後會失效。 – Anu

+0

不明白你的意思,但你可以添加nuget包到你的UWP項目中,我只是創建一個空白的並添加CacheManager.Microsoft.Extensions.Caching.Memory並使用它。工作完全正常 – MichaC

回答

2

System.Runtime.Caching在當前的UWP SDK版本中不可用。根據什麼類型的,你需要的緩存,有幾個選項:

UI緩存:

'真正' 的數據緩存,使用第三方庫,例如:

  • Akavache:基於SQLite的異步key-value存儲,使用過期規則。
  • 將數據以JSON/XML格式自行保存到磁盤。

更新的留言:

您可以將其設置爲Disabled清除NavigationCacheMode。請注意,您無法在GoBack()上傳遞參數來告訴上一頁清除緩存。所以你必須添加一些事件消息(比如Prism EventAggregator)或者一個全局變量來跟蹤它。

如果要以編程方式將NavigationCacheMode的值更改爲Enabled或Required,則只能在頁面的構造函數中設置這些值。

如果將NavigationCacheMode的值從RequiredEnabled更改爲Disabled,則會從緩存刷新頁面。

但是既然你是從網絡通話談論JSON數據,我會去Akavache。

+0

感謝您的信息巴特。 – Anu

+0

我需要存儲由我的web應用程序返回的Json數據。我試過了Page.NavigationCacheMode,有沒有辦法清除頁面緩存,例如屏幕2修改了一些需要更新到以前屏幕的數據,我找不到任何相同的文檔/示例 – Anu

+0

已更新的答案。但是當你談論從Web獲取json時,請看看Akavache ..在我看來,這是一個更好的解決方案。 – Bart