[英]'Caching' a large table in ASP.NET
我了解每次刷新页面(尤其是在“ AjaxLand”中)都会导致从头开始调用我的后端/代码隐藏类……这是一个问题,因为我的类(它是System.Web.UI中的成员对象) .Page)包含从数据库中获取的大量数据。 因此,现在AjaxLand中的每个页面刷新都使我进行大型后端DB调用,而不仅仅是重用内存中的类对象。 有什么解决办法吗? 这是会话变量起作用的地方吗? 会话变量是我必须在链接到单用户和单会话实例的内存中保留对象的唯一选择吗?
既然您提到Ajax,我想您可能要考虑以下几点:
假设这个大数据集是静态的而不是暂时的,在第一次调用Ajax时,您的应用程序查询数据库,检索大量数据并返回到客户端(即,在浏览器上运行的浏览器/ JavaScript等),现在是客户端已经将所有这些存储在内存中。 随后,无需再返回服务器以获取客户端已在内存中存储的相同数据。 您需要做的是使用JavaScript重建DOM或其他任何内容。 从那时起,所有工作都可以在客户端上完成。
现在假设数据不是静态的而是瞬态的,那么通过将数据放置在服务器上来缓存会话绝对不是您想要的解决方案。 每次客户端向服务器发送请求时,服务器仅返回高速缓存(会话)中的内容,则数据已经过时,并且与客户端内存中的数据没有任何区别。
关键是,如果数据是静态的,则在内存中已有数据之后,将往返行程保存到服务器。 如果数据是瞬态的,恐怕除了以某种方式重新查询或重新检索数据并将所有内容发送回客户端之外,没有廉价的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.