我有一个查询数据库记录的应用程序。记录数量可能达到数千,这可能会突显进程的记忆并最终导致崩溃或响应缓慢。
分页查询是此解决方案,但记录中的信息始终在不断变化。因此,为了提供独特的体验,我们不得不在用户进行查询时显示可用的信息。
使用分页可以动态更新从页面移动到页面的内容。我相信客户端缓存可以解决这个问题。
我发现的一种方法是将结果以XML格式存储到磁盘并使用LINQ to XML进行查询。是否有任何经验证的客户端缓存机制可以与桌面应用程序(而不是Web)一起使用
答案 0 :(得分:2)
查看http://msdn.microsoft.com/en-us/library/ff664753之类的模式 它讨论了企业库缓存应用程序块的使用,它允许开发人员在其应用程序中加入本地缓存。
另请阅读http://www.codeproject.com/Articles/8977/Using-Cache-in-Your-WinForms-Applications
Enterprise Library 5.0可以在http://msdn.microsoft.com/en-us/library/ff632023
找到答案 1 :(得分:1)
除非您让缓存无限增长,否则内存使用不应成为问题。预取用户可能永远不会看到的太多页面,或者保留用户长时间未查看的页面几乎没有什么好处。动态获取下一页/上一页将保持高性能,但您应该从已编辑或超过特定时间跨度的缓存页中清除。从缓存中清除只需要丢弃对页面的所有引用(例如,将其从任何列表或词典中删除)并允许垃圾收集器完成其工作。
您还可以将WeakReference存储到您的对象中,并让垃圾收集器在需要时收集您的对象,但这样可以减少对未缓存内容的控制。
或者,有一些非常好的第三方解决方案,特别是如果它是一个网格控件。 DevExpress grid controls具有出色的服务器模式,可以处理具有良好性能的非常大的数据集。