【问题标题】:No system.runtime.caching in UWPUWP 中没有 system.runtime.caching
【发布时间】:2017-05-10 13:28:17
【问题描述】:

我正在寻找在我的 UWP 应用程序中实现缓存,但我找不到 System.Runtime.Caching,我查看了 msdn https://msdn.microsoft.com/en-us/library/mt185505.aspx 找不到此参考。 UWP 支持吗?如果不是,还有什么选择?我在stackoverflow上查看了其他类似的问题,但在No System.Runtime.Caching available?上找不到任何可行的答案

【问题讨论】:

  • Microsoct.Extensions.MemoryCache 不能在 UWP 上工作吗?您还可以使用应该可以工作的 CacheManager,在 Dictionary basec 缓存中构建或使用 Microsoft Extensions 我猜应该完全可以工作
  • 我无法在我的 UWP 项目中引用 Microsoft.Extensions.Caching.Memory.dll。我可以使用字典,但我需要一些键值对过期,例如共享访问签名将在一段时间后失效。
  • 不明白你的意思,但你可以将 nuget 包添加到你的 UWP 项目中,我只是创建了一个空白包并添加了 CacheManager.Microsoft.Extensions.Caching.Memory 并使用它。工作得很好
  • 是的,安装好了,后来发现是因为System.Runtime版本不匹配
  • 您可能需要更新 UWP Microsoft.NETCore.UniversalWindowsPlatform 包才能使其正常工作

标签: c# caching uwp


【解决方案1】:

System.Runtime.Caching 在当前的 UWP SDK 版本中不可用。根据您需要的缓存类型,有多种选择:

界面缓存:

  • Page.NavigationCacheMode:记住页面在 backstack 上的渲染(包括滚动位置、屏幕上的数据……)。
  • UIElement.CacheMode:将一个 UIElement 的内容渲染为位图(主要用于复杂的渲染)。

“真实”数据缓存,使用 3rd 方库,例如:

  • Akavache:基于 SQLite 的异步键值存储,带有过期规则。
  • 自己将数据以 JSON/XML 格式保存到磁盘。

评论更新:

您可以通过将 NavigationCacheMode 设置为 Disabled 来清除它。请注意,您不能在 GoBack() 上传递参数来告诉您的上一页清除缓存。因此,您还必须添加某种事件消息传递(例如 Prism EventAggregator)或全局变量来跟踪它。

如果您想以编程方式将 NavigationCacheMode 的值更改为 Enabled 或 Required,您只能在页面的构造函数中设置这些值。

如果您将NavigationCacheMode 的值从RequiredEnabled 更改为Disabled,则会从缓存中刷新页面。

但既然你在谈论来自网络通话的 JSON 数据,我会选择 Akavache。

【讨论】:

  • 我需要存储我的网络应用返回的 Json 数据。我尝试了 Page.NavigationCacheMode,有没有办法清除页面缓存,例如屏幕 2 修改了一些需要更新到上一个屏幕的数据,我找不到任何相同的文档/示例
  • 更新了答案。但是当您谈论从 Web 检索 json 时,请查看 Akavache .. 在我看来这是一个更好的解决方案。
  • 谢谢大家!将评估 akavacache
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2016-09-27
  • 1970-01-01
相关资源
最近更新 更多