HY,
我对Viewstate的asp.net ajax项目中的一些常规优化方法感兴趣
(例如,减少视图状态的大小, 或者只是以某种方式加速观察状态, 或者其他这应该是一般性讨论:-))。
那么你对ViewState使用什么样的优化? 在Asp.net或Ajax框架上提供了哪些可能性?
答案 0 :(得分:2)
禁用显示您不需要的控件的状态,例如页面上有许多控件,可能不需要视图状态,如菜单,某些超链接,某些显示统计标签等,请关闭它们。
您还可以做的另一件事是,减少控件ID长度,这会将页面大小提高到更好的水平。
您的控件ID如下所示
PageContainer1_MyLoginContainerUserControl1_MyLoginForm1_MyUsername1
PageContainer1_MyCustomerDataGrid1_item0_MyCustomerNameLabel
我知道这听起来不错,但如果您注意到网格/列表项目放置了如此多的大控件ID,我们注意到通过减少ID中的某些字符也有助于改善页面大小。在list / gridview等中它将这个提高了30%到40%,嵌套的用户控件也很糟糕,当你真的不认为你需要控件的ID时,只需要把它放在3个字母以上。
答案 1 :(得分:2)
@silky是对的,尽可能禁用它。我们尝试在尽可能多的控件上禁用它。
此外,一旦你尽可能少地使用它,可能值得在你的页面中放置这样的东西(或者更好的基页类)
Protected Overrides ReadOnly Property PageStatePersister() As PageStatePersister
Get
Return New SessionPageStatePersister(Me)
End Get
End Property
但这取决于您拥有多少用户以及您拥有多少内存,并且它假定您正在使用会话。
哦,在C#中它是:
protected override PageStatePersister PageStatePersister
{
get
{
return new SessionPageStatePersister(this);
}
}
答案 2 :(得分:1)
最佳优化:在其中存储较少的东西。
但你需要具体。你遇到了问题吗?如果是,有什么控制?你自己?其他?请展开。
答案 3 :(得分:1)
我可以为此受到批评:但在某些情况下你可以store viewstate in session by just override tho methods of Page。
为了平衡我的业力,我还建议你在未来的项目中放弃viewstate和session;),例如尝试使用Asp.NET MVC。
答案 4 :(得分:1)
如果您从未阅读 TRULY Understanding ViewState ,请先执行此操作。
对于帮助ViewState的AJAX,我只是在这里推测,但如果你在UpdatePanel中有整个页面,你可能能够为整个页面禁用ViewState
答案 5 :(得分:1)
我能够将我的视图状态从200-300KB减少到62个BYTES,方法是将它保存在服务器上,只是来回传递一个GUID。
我已经写了一篇关于如何通过扩展你可以参考的HiddenFieldPageStatePersister来做到这一点的文章: