自定义 ASP.NET 控件如何在不使用 ViewState 的情况下缓存数据?
-
06-09-2019 - |
解决方案
您可以使用不同的商店除了页面你的浏览状态。 这篇文章描述了这样做的一些方法。
这样做的要旨是重写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其他地方,如一个数据库或甚至在存储器中。
这种方法的好处是,你将不必重写很多代码。其缺点是,这些临时文件将在服务器上填满空间,需要在一段时间一次清理。
罗布,我会试着在你的情况是缓存在会话从数据库中检索到的数据 - 第一次网格请求它。
如果您尝试这一点,并为网格视图状态的禁用结合起来,你能想出非常漂亮的解决方案。
如果您不能在会话缓存算,总有一些另类持久性机制可能做的工作。
但是从给定的情况下设计方面,我肯定会用数据高速缓存方法去。