我们将Visual Studio 2010和.NET 4.0用于ASP.NET网站,将MVC用于通用架构。
这个问题分为两部分。没有什么是关于如何做到这一点,但根据良好的设计和行业标准,正确的方法是什么。
如果我有一个带有1000 +记录(大量数据)的GridView(启用了AJAX),并且一次显示100条记录,我是否会返回数据库以查找下一条记录,或者将数据存储在会话中并通过从会话中获取新数据来重新绑定gridview?
在插入的情况下,我有2个选择。一,在数据库中插入记录并重新加载gridview并重新绑定。二,在会话和数据库中插入记录,并根据会话数据更新GridView。我不需要从数据库下载新数据。
你能指点我正确的方向吗?
答案 0 :(得分:3)
一次忘记1000条记录......如果你一次只显示100条记录,那就是你需要担心的全部内容。在我看来,重新查询数据库。一次100条记录并不多。不要因为这种事情而依赖会话,拥抱网络的“无国籍”性质。
我不认为使用会话会给你带来很多好处。无论哪种方式,都需要将信息发送到用户的浏览器。查询数据库100条记录可能是一项微不足道的操作(就延迟而言)。从开发的角度来看,在这里引入会话状态的复杂性增加并不值得。 (问问自己,会议给你带来什么好处?)
这只是我的观点,其他人可能会有所不同。但我无法想象在这种情况下一次查询100条记录会遇到太多问题
答案 1 :(得分:1)
阅读ScottGu的这篇文章。在数据库中记录您的记录集。在大多数情况下,这是正确的方法。文章显示了一些基准。如果您的站点流量很大,则在会话中存储可能会占用大量资源。如果你要扩展到webfarm,你可能最终会在sql server中存储会话状态。
会话数据也不稳定。如果用户在2个浏览器窗口中打开同一页面怎么办?你最终会踩到每个页面的脚趾。如果用户离开页面,让会话或缓存过期怎么办?您将遇到与Cache相同的问题。
在服务器上进行分页是最好的。
http://www.4guysfromrolla.com/articles/031506-1.aspx#postadlink
答案 2 :(得分:1)
您可以将数据存储在服务器的缓存对象中,以避免每次都必须读取数据库。 http://msdn.microsoft.com/en-us/library/aa478965.aspx