我的 wpf 客户端在启动时从服务器加载了很多常备数据。所以,我想在客户端实现一个缓存策略。
我知道 .NET 框架 4 中的新 System.Runtime.Caching 命名空间。不幸的是,只有一个内存缓存。我不想在客户端每次启动时加载大量数据。所以我正在寻找一个持久的客户端缓存。
你怎么看待这件事?
另一个想法是我使用 OODB(如 db4o 或 VelocityDB)进行客户端缓存。这是一个坏主意吗?我在客户端缓存方面没有任何经验。
感谢您的回答和建议。
亲切的问候,亲
我的 wpf 客户端在启动时从服务器加载了很多常备数据。所以,我想在客户端实现一个缓存策略。
我知道 .NET 框架 4 中的新 System.Runtime.Caching 命名空间。不幸的是,只有一个内存缓存。我不想在客户端每次启动时加载大量数据。所以我正在寻找一个持久的客户端缓存。
你怎么看待这件事?
另一个想法是我使用 OODB(如 db4o 或 VelocityDB)进行客户端缓存。这是一个坏主意吗?我在客户端缓存方面没有任何经验。
感谢您的回答和建议。
亲切的问候,亲
如何在客户端存储数据并不重要。不过,出于您的目的,我会研究 IsolatedStorage。可能更困难的是判断缓存何时变得陈旧。这实际上是 System.Runtime.Caching 擅长的。服务器数据是否会发生变化,还是仅在应用程序发布新版本后发生变化?如果数据仅在新版本后更改,您可能希望将其作为资源包含到应用程序设置中。如果没有,您必须有一些超时或信号告诉客户端是时候检查服务器上更改的数据了。您是否已经考虑过延迟加载数据?这样,延迟可能不会全部发生在应用程序启动时,并且不太明显,并且可能您甚至不必将完整的数据加载到客户端中。
关于超时:在我们的应用程序中,我们有一个固定的超时,它在第一次加载时设置给每个引用列表,并且每次从缓存中请求它时,都会检查该超时。如果已过期,则在返回列表之前会透明地刷新缓存。这是一个权衡,因为客户端的数据可能会过时一段时间。我们接受这一点,因为它在我们的案例中并不重要,这样每个列表都对自己负责,我们不需要中央注册表来跟踪每个列表的状态以从外部设置超时。