NetAdvantage控件AsyncRefreshPanel使用ViewState压缩

实际情况:

使用NetAdvantage的AsyncRefreshPanel控件来做的Ajax,在回传的时候有相当多的ViewState(我想微软的UpdatePanel也会有相同的问题);

有时回传的ViewState达到30K以上; 如果网速慢,用户体验是很大的问题。


1.有人说:

Don't use viewstate compression! Use http compression instead!

http://bloggingabout.net/blogs/ramon/archive/2006/09/01/Don_2700_t-use-viewstate-compression_2100_-Use-http-compression-instead_2100_.aspx

2.实际情况是,HTTP压缩我开启了,但Postback的时候,Http还有作用么?我想是不会起作用的。

3.一般的ViewState压缩会使用自己设置隐藏域来实现:

ViewState Compression

http://www.codeproject.com/KB/viewstate/ViewStateCompression.aspx

压缩ASP.NET中的ViewState的改进方法

http://www.cnblogs.com/mack/archive/2005/07/28/202235.html

4.自己设置的隐藏域,AsyncRefreshPanel更新ViewState时会找不到(可能微软UpdatePanel也有同样问题);

所以最好还是使用原有的ViewState。但这位朋友说可能会遇到FormatException:

压缩ViewState后,在Convert.FromBase64String时偶尔会发生FormatException

http://topic.csdn.net/u/20081216/18/3d4426f8-6070-4544-a03b-5a9f7b5e2d27.html

5.实际测试了4的代码,暂时未发生FormatException,在AsyncRefreshPanel里工作正常。

但性能具体提升多少没有仔细测试。

6.综合一下:

*可配置是否压缩;

*可配置最小压缩值;

*不改变隐藏域,使用原隐藏域。

7.改天有时间再发详细测试结果。

原文地址:https://www.cnblogs.com/nonlyli/p/1385861.html