实际情况:
使用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.改天有时间再发详细测试结果。