zoukankan      html  css  js  c++  java
  • ViewState压缩

    /// <summary>
    ///CompressViewState 的摘要说明
    /// </summary>
    public class CompressViewState:System.Web.UI.Page
    {
    	public CompressViewState()
    	{
    		//
    		//TODO: 在此处添加构造函数逻辑
    		//
    	}
    
    
        protected override object LoadPageStateFromPersistenceMedium()
        {
            PageStatePersister pageStatePersister = this.PageStatePersister;
            pageStatePersister.Load();
            string vState = pageStatePersister.ViewState.ToString();
            byte[] pBytes = System.Convert.FromBase64String(vState);
            pBytes = Decompress(pBytes);
            LosFormatter mFormat = new LosFormatter();
            object ViewState = mFormat.Deserialize(System.Convert.ToBase64String(pBytes));
            return new Pair(pageStatePersister.ControlState, ViewState);
    
    
    
    
        }
    
    
        protected override void SavePageStateToPersistenceMedium(object pViewState)
        {
            Pair pair;
            PageStatePersister pageStatePersister = this.PageStatePersister;
            object ViewState;
            if (pViewState is Pair)
            {
                pair = ((Pair)pViewState);
                pageStatePersister.ControlState = pair.First;
                ViewState = pair.Second;
    
            }
            else
            {
                ViewState = pViewState;
            }
    
    
            LosFormatter mFormat = new LosFormatter();
            StringWriter mWriter = new StringWriter();
            mFormat.Serialize(mWriter, ViewState);
            String mViewStateStr = mWriter.ToString();
            byte[] pBytes = System.Convert.FromBase64String(mViewStateStr);
            pBytes = Compress(pBytes);
            String vStateStr = System.Convert.ToBase64String(pBytes);
            pageStatePersister.ViewState = vStateStr;
            pageStatePersister.Save();
        }
    
        /// <summary>
        /// This Methhod takes the byte stream as parameter 
        /// and return a compressed bytestream.
        /// For compression it uses GZipStream
        /// </summary>
        /// <param name="b"></param>
        /// <returns></returns>
        private byte[] Compress(byte[] b)
        {
            MemoryStream ms = new MemoryStream();
            GZipStream zs = new GZipStream(ms, CompressionMode.Compress, true);
            zs.Write(b, 0, b.Length);
            zs.Close();
            return ms.ToArray();
        }
    
    
        /// <summary>
        /// This methhod takes the compressed byte stream as parameter
        /// and return a decompressed bytestream.
        /// </summary>
        /// <param name="b"></param>
        /// <returns></returns>
        private byte[] Decompress(byte[] b)
        {
            MemoryStream ms = new MemoryStream();
            GZipStream zs = new GZipStream(new MemoryStream(b), CompressionMode.Decompress, true);
            byte[] buffer = new byte[4096];
            int size;
            while (true)
            {
                size = zs.Read(buffer, 0, buffer.Length);
                if (size > 0)
                    ms.Write(buffer, 0, size);
                else break;
            }
            zs.Close();
            return ms.ToArray();
        }
    }
    

      http://www.codeproject.com/Articles/101888/ViewState-Various-ways-to-reduce-performance-overh

  • 相关阅读:
    [maven 问题]java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map
    [Java基础]Java异常捕获
    [JVM]常用JVM工具使用
    [JVM]一次线上频繁GC的问题解决
    [Java 基础]ResultSet 指定field映射到Pojo对象的Map
    [JVM]使用JMeter做压力测试
    [Linux命令]zip
    [Mysql]分组取最新一条
    [zookeeper_kafka]zookeeper和Kafka安装
    网络带宽是什么?
  • 原文地址:https://www.cnblogs.com/halo/p/3248271.html
Copyright © 2011-2022 走看看