对于 Blazor
InteractiveServer
渲染模式,Microsoft 文档建议在预渲染调用中我(和您)读取页面所需的数据并将其保存到 PersistentComponentState。然后在第二次调用 OnInitializeAsync
时,从 PersistentComponentState 中读取以填充页面。
为什么不使用
MemoryCache
?这样做有什么坏处吗? 阅读 Microsoft 文档 看起来这是一个应用程序全局数据存储,而不是每个电路存储。所以我认为 MemoryCache
基本上是一样的。
针对不同的问题有不同的解决方案。
对于初学者来说,您不能依赖缓存来始终保存数据:
PersistentComponentState 似乎被明确设计为支持 Blazor 并跨不同渲染模式交叉数据,因此它将是我的第一选择。
主要区别在于,MemoryCache 将(可以)存储所有 .net 对象,而 PersistentComponentState 则与 Json 序列化一起使用。对于支持 Wasm 和应用程序暂停场景至关重要。但您的数据需要可序列化。