服务器端控件带来的好外我在这就不多说了,但多过的使用服务器端件保存控件的状态会带来大量的ViewState的情况大家一定遇到过吧.过多的ViewState会很大程度上降低页面的加载速度制成服务器端的性能下降.

以下是结合CSharpZipLib对ViewState进行压缩的方法.
using System;
using System.Web.UI;
using System.IO;
using ICSharpCode.SharpZipLib.Zip.Compression;

namespace MSPlus.Web.UI
{
    /**//// <summary>
    /// 压缩ViewState By Mack.Z (MSPlus)
    /// </summary>
    public class Page : System.Web.UI.Page
    {

        protected override void SavePageStateToPersistenceMedium(Object pViewState)
        {
            LosFormatter mFormat = new LosFormatter();
            StringWriter mWriter = new StringWriter();

            mFormat.Serialize(mWriter, pViewState); 
            String mViewStateStr = mWriter.ToString(); 

            byte[] pBytes = System.Convert.FromBase64String(mViewStateStr);

            pBytes = Compress(pBytes); 

            String vStateStr = System.Convert.ToBase64String(pBytes); 

            RegisterHiddenField("__MSPVSTATE", vStateStr);
        }

        protected override Object LoadPageStateFromPersistenceMedium()
        {
            String vState = this.Request.Form.Get("__MSPVSTATE");

            byte[] pBytes = System.Convert.FromBase64String(vState);

            pBytes = DeCompress(pBytes);

            LosFormatter mFormat = new LosFormatter();

            return mFormat.Deserialize(System.Convert.ToBase64String(pBytes));
        }


        public static byte[] Compress(byte[] pBytes) 
        
            MemoryStream mMemory = new MemoryStream();

            Deflater mDeflater = new Deflater(ICSharpCode.SharpZipLib.Zip.Compression.Deflater.BEST_COMPRESSION);
            ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream mStream = new ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream(mMemory,mDeflater,131072);

            mStream.Write(pBytes,0,pBytes.Length);
            mStream.Close();

            return mMemory.ToArray();
        } 


        public static byte[] DeCompress(byte[] pBytes) 
        
            ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream mStream = new ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream(new MemoryStream(pBytes));
            
            MemoryStream mMemory = new MemoryStream();
            Int32 mSize;

            byte[] mWriteData = new byte[4096];

            while(true)
            {
                mSize = mStream.Read(mWriteData, 0, mWriteData.Length);
                if (mSize > 0)
                {
                    mMemory.Write(mWriteData, 0, mSize);
                }
                else
                {
                     break;
                }
            }

            mStream.Close();
            return mMemory.ToArray();
        } 

    }
}

转载于:https://www.cnblogs.com/babayaluo/archive/2006/07/06/443926.html

测试压缩ASP.NET中的ViewState相关推荐

  1. Asp.Net中的ViewState知识

    ASP.NET ViewState 初探 http://www.microsoft.com/china/msdn/archives/library/dnaspnet/html/Asp11222001. ...

  2. 比较.ASP.NET中Application,Session,Cookie,ViewState和Cache

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  3. ASP.NET中PostBack和ViewState

    ASP.NET中PostBack和ViewState 关于PostBack,我曾经也写过一篇博客<深入理解doPostBack>.在这篇文章里有对PostBack进行了一些研究,现在看来研 ...

  4. cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState...

    本文申明:本人凭着对英文和技术的热爱,根据自己有限的英文水平通过翻译文章以达到提高自身能力,如果有什么地方不对的,希望大家提意见. 目的:这篇文章将描述在asp.net中如何管理cache以及cach ...

  5. Asp.net中Application Session Cookie ViewState Cache

    Application 1.         Application用来保存所有用户共用的信息 2.         在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Ap ...

  6. 搜集《ASP.NET中常用的26个优化性能方法》

    1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...

  7. [转帖]ASP.NET中常用的优化性能的方法

    ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1.       数据库访问性能优化     数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...

  8. ASP.NET中常用的26个优化性能方法(转)

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  9. 利用JavaScript在ASP.NET中动态生成系统菜单

      用户在登陆一个系统后通常会因为权限的不同而使用不同的系统功能,我们在实现用户使用的菜单项时有两种选择,一是列出全部系统菜单项,根据用户的权限禁用一部分菜单,二是根据权限动态加载菜单,这样只要列出的 ...

  10. ASP.NET中常用的26个优化性能方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

最新文章

  1. hdu1572 水搜索
  2. 如何在 Linux 上安装服务器管理软件 Cockpit
  3. 以太坊智能合约安全入门了解一下(下)
  4. 38Exchange 2010升级到Exchange 2013-安装第二台CAS2013
  5. 1.0jpa 2.0_EasyCriteria 2.0 – JPA标准应该很容易
  6. goland环境配置_Goland辅助工具goimports和gomodules
  7. 看完这篇文章,还不懂nginx,算我输
  8. python的随机种子实例
  9. Centos7使用docke搭建openV
  10. JDK1.8HashMap底层实现原理
  11. 计算机文化基础—计算机软件
  12. 计算机中b代表的含义是什么意思,表示文件大小的MB,KB,B等是什么意思?
  13. dxlary 解决AutoCad2006致命错误unhandled access violation reading 0x0000 exception at 6532b0h。
  14. 自行车、电动自行车、儿童自行车做16 CFR 1512测试报告
  15. 2019吉大软件C++课设——模拟即时通信系统
  16. mac 上压测工具_Mac OS X下压力测试技巧
  17. linux centos 手册,zh/FAQ/CentOS4 - CentOS Wiki
  18. Hive Thrift Server
  19. 斯诺克台球游戏HTML5
  20. phpexcel导出大量数据合并单元格_PHPExcel处理一个单元格内多条数据拆分成多个单元格多条数据...

热门文章

  1. shell 的AWK
  2. Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)
  3. 自动装配的几种方式——Spring IOC/DI(四)
  4. JAVA OOP(二)——方法的重载、构造方法以及this关键字
  5. Mac如何解决vi vim光标移动慢问题
  6. http协议学习系列(转)
  7. Request header field mytoken is not allowed by Access-Control-Allow-Headers in preflight (请求头设置问题)
  8. git学习笔记-(11-git存储)
  9. java文件删除操作_Java文件复制删除操作合集
  10. python命令行安装pandas_python中安装pandas