我不确定这在 ASP.NET 中是否可行,但这是我遇到的问题:我的网络应用程序上的一些数据列表是使用 网格视图;然而,由于其中一些列表可能包含大量数据,因此它们有时会将页面权重推至几兆字节范围内 视图状态. 。由于我们不想每次在页面上有回发时都重新查询数据库以获取此信息,我想知道是否有一种方法可以缓存提供给服务器上的控件的数据,然后在下次访问它有一个回发。

那么这可能吗?如果是这样,有人可以向我指出有关如何执行此操作的更多信息吗?如果不可能,有人对我如何解决这个问题有任何建议吗?

有帮助吗?

解决方案

您可以使用不同的商店除了页面你的浏览状态。 这篇文章描述了这样做的一些方法。

这样做的要旨是重写SavePageStateToPersistenceMedium和的LoadPageStateFromPersistenceMedium。

其他提示

您可以尝试在GridView上关闭ViewState中。这常常在不影响功能的实现。效果非常好,如果你的GridView只显示数据,并且不允许修改,更新,删除等。

http://www.pluralsight.com/main /screencasts/screencast.aspx?id=understanding-viewstate

EnableViewState="false"

在一般情况下,你必须创建的ViewState之间在客户端和服务器上的某种类型的高速缓存的平衡。不要怕可怕的重新查询数据库。它可以缓存数据相当不错。也许看看启用页面缓存。我会避免馅所有的数据到会话附带其自身的问题。

http://msdn.microsoft.com/en-us/library /hdxfb6cy.aspx

<%@ Page Language="C#" AutoEventWireup="true" ... %>
<%@ OutputCache ... %>

下面是你如何可以在视图状态存储在本地临时文件的例子: http://www.marklio.com/ marklio / PermaLink.aspx?GUID = af76f1a0-2d44-44c3-bfb5-029740b8e683

您还在使用视图状态使用这种方法,但不是填补了HTML要创建服务器端的临时文件。因此,用户不会注意到的是,ViewState是巨大的。你也可以重写上面的示例存储数据的Viewstate其他地方,如一个数据库或甚至在存储器中。

这种方法的好处是,你将不必重写很多代码。其缺点是,这些临时文件将在服务器上填满空间,需要在一段时间一次清理。

罗布,我会试着在你的情况是缓存在会话从数据库中检索到的数据 - 第一次网格请求它。

如果您尝试这一点,并为网格视图状态的禁用结合起来,你能想出非常漂亮的解决方案。

如果您不能在会话缓存算,总有一些另类持久性机制可能做的工作。

但是从给定的情况下设计方面,我肯定会用数据高速缓存方法去。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top