我有一个复杂的,非常复杂的ASP.NET
WebForm,有一个很大的ViewState
。目前,为了降低浏览器的影响力(通过缩小__VIEWSTATE隐藏输入字段),我使用PageAdapter
和SessionPageStatePersister
将ViewState
存储在Session
中。
但是,我想将会话模式从InProc
更改为StateServer
,以便我可以降低RAM使用率并避免站点重启和应用程序池回收问题。我是否需要将ViewState拉出会话?或者它可以保持原样吗?
将来,我也想加载平衡,但我听说我可以使用“粘性会话”,这样就不会强迫我进入StateServer。
注意:我目前正在使用.NET 2.0
(已集成),但我愿意更新。
答案 0 :(得分:2)
在走这条路线之前我还会考虑其他一些选择......
我要研究的第一件事是ViewState压缩,它可以将ViewState的大小减少多达60%。 Telerik提供了一个很好的压缩模块,您可以找到here
其次,您可以在ViewState字段上设置最大长度,这将强制ASP.NET将ViewState划分为多个隐藏字段。这通常会产生更好的页面性能。您可以在PageStateFieldLength
中设置web.config
,如下所示:
<pages maxPageStateFieldLength="100"></pages>
答案 1 :(得分:0)
SessionPageStatePersister
将您的Viewstate存储在会话碰巧存储的会话对象中。它对于你的会话是InProc,SQL还是StateServer是完全不可知的,它应该继续工作而不必做任何事情。