在UWP中没有system.runtime.caching

3

Microsoft.Extensions.MemoryCache在UWP上不起作用吗?您也可以使用应该能够工作的CacheManager,内置的基于字典的缓存或使用Microsoft Extensions应该完全可以工作,我猜。 - MichaC
我无法在我的UWP项目中引用Microsoft.Extensions.Caching.Memory.dll。我可以使用字典,但我需要对某些键值对(例如共享访问签名)设置过期时间,以便在一段时间后失效。 - Anu
不太明白你的意思,但是你可以将NuGet包添加到你的UWP项目中。我刚创建了一个空白项目并添加了CacheManager.Microsoft.Extensions.Caching.Memory,然后使用它。完全正常运行。 - MichaC
是的,安装好了,后来我发现这是因为 System.Runtime 版本不匹配。 - Anu
你可能需要更新UWP Microsoft.NETCore.UniversalWindowsPlatform包才能使其正常工作。 - MichaC
1个回答

3

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

UI缓存:

使用第三方库进行“真正”的数据缓存,例如:

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

评论更新:

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

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

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

但是,由于您谈论的是来自Web调用的JSON数据,我建议使用Akavache。


我需要存储由我的 Web 应用返回的 Json 数据。我尝试了 Page.NavigationCacheMode,是否有一种清除页面缓存的方法,例如屏幕 2 修改了一些需要更新到前一个屏幕的数据,我找不到任何相关文档或示例。 - Anu
更新的答案。但是,如果您正在讨论从Web检索json,请查看Akavache..在我看来,这是一个更好的解决方案。 - Bart
谢谢大家!我们将评估Akavacache。 - Anu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接