客户端缓存C#

时间:2012-10-03 06:26:59

标签: .net wpf caching object-persistence clientside-caching

我的wpf客户端正在从服务器启动时加载大量常备数据。所以,我想在客户端实现缓存策略。

我知道.NET框架中新的System.Runtime.Caching命名空间4.不幸的是,只有内存缓存。我不想在每次启动客户端时加载大量数据。所以我正在寻找持久的客户端缓存。

你怎么看?

另一个想法是我使用OODB(如db4o或VelocityDB)进行客户端缓存。这是一个坏主意吗?我没有客户端缓存方面的经验。

感谢您的回答和建议。

亲切的问候,亲

1 个答案:

答案 0 :(得分:2)

如何在客户端存储数据并不重要。不过,我会考虑使用IsolatedStorage。可能更困难的是告诉缓存何时变为陈旧。这实际上是System.Runtime.Caching所擅长的。服务器数据是根本更改,还是仅在应用程序的新版本发生后更改?如果数据仅在新版本之后发生更改,您可能希望将其作为资源包含在应用程序设置中。如果没有,您必须有一些超时或信号告诉客户端是时候检查服务器上的更改数据了。您是否已考虑过延迟加载数据?这样,延迟可能不会在应用程序启动时发生,并且不太明显,甚至可能你甚至不必将完整的数据加载到客户端。

关于超时:在我们的应用程序中,我们有一个固定的超时,它在首次加载时设置为每个引用列表,每次从缓存请求时,都会检查超时。如果它已过期,则在返回列表之前透明地刷新缓存。这是一种权衡,因为客户端的数据可能会陈旧一段时间。我们接受这一点,因为它在我们的情况下并不重要,并且每个列表都负责自己,我们不需要中央注册表跟踪每个列表的状态,以便从外部设置超时。