在使用 Asp.net WebForm进行开发中我一般会在自定义页面基类(BasePage)中进行ViewState的压缩, 注:此方法为网上收集,功能挺实用的。

压缩代码:

   /// <summary>/// 压缩数据/// </summary>/// <param name="data"></param>/// <returns></returns>public byte[] Compress(byte[] data){MemoryStream ms = new MemoryStream();GZipStream stream = new GZipStream(ms, CompressionMode.Compress);stream.Write(data, 0, data.Length);stream.Close();return ms.ToArray();}/// <summary>/// 解压数据/// </summary>/// <param name="data"></param>/// <returns></returns>public byte[] Decompress(byte[] data){MemoryStream ms = new MemoryStream();ms.Write(data, 0, data.Length);ms.Position = 0;GZipStream stream = new GZipStream(ms, CompressionMode.Decompress);MemoryStream temp = new MemoryStream();byte[] buffer = new byte[1024];while (true){int read = stream.Read(buffer, 0, buffer.Length);if (read <= 0){break;}else{temp.Write(buffer, 0, buffer.Length);}}stream.Close();return temp.ToArray();}

在页面的基类中的代码:

View Code

/// <summary>/// 重载SavePageStateToPersistenceMedium/// <remarks>/// 将viewstate进行压缩/// </remarks>/// </summary>/// <param name="state"></param>protected override void SavePageStateToPersistenceMedium(object state){LosFormatter formatter = new LosFormatter();StringWriter writer = new StringWriter();formatter.Serialize(writer, state);string viewState = writer.ToString();byte[] data = Convert.FromBase64String(viewState);byte[] compressedData = this.Compress(data);string str = Convert.ToBase64String(compressedData);ClientScript.RegisterHiddenField("__MYVIEWSTATE", str);}/// <summary>/// 重载LoadPageStateFromPersistenceMedium/// <para>将viewstate进行解压缩</para>/// </summary>/// <returns></returns>protected override object LoadPageStateFromPersistenceMedium(){string viewstate = Request.Form["__MYVIEWSTATE"];byte[] data = Convert.FromBase64String(viewstate);byte[] uncompressedData =this.Decompress(data);string str = Convert.ToBase64String(uncompressedData);LosFormatter formatter = new LosFormatter();return formatter.Deserialize(str);}

代码比较简单,所以不写注释。

压缩效率可将Viewstate减小50%左右。(非精确值,估计的大概值);

上面代码我都写在BasePage基类中。

转载于:https://www.cnblogs.com/easeyeah/archive/2012/02/29/2373057.html

分享:ViewState压缩方法相关推荐

  1. 如何把照片进行压缩?好用的压缩方法分享

    照片的内存太大,我们怎么才能把照片给压缩一下呢?相信这个问题困扰了很多的小伙伴,尤其是第一次遇到这种情况,就会更加手足无措.实际上,遇到这种问题还是很常见的,如照片内存太大就会上传不了,或者是占用太多 ...

  2. python如何压缩pdf_如何压缩PDF文件?分享4种高效压缩方法!

    原标题:如何压缩PDF文件?分享4种高效压缩方法! 在我们日常学习和日常工作中,我们时常会用到PDF文件,我们时常会发送PDF文件.但是如果PDF文件过大的话,上传就会受到影响,那么如何将PDF文件的 ...

  3. 手机如何压缩照片?压缩方法分享

    怎么用手机来压缩照片呢?大家在使用照片的时候,也会遇到很多问题,有的是照片的格式不对,有的是照片的内存太大上传不了,或者是占用了太大的内存,针对照片内存太大我们怎么才能将它们给压缩一下呢?很多小伙伴不 ...

  4. 图片怎么在线压缩?图片在线压缩方法分享

    通过压缩图片,可以减小图片的大小,从而减少所需的存储空间.这对于在有限存储空间的设备上存储大量照片和视频非常有用.此外,还可以减少在设备之间传输和处理图片所需的时间和精力,从而提高工作的效率.特别是在 ...

  5. 怎样压缩图片?好用的图片压缩方法分享

    怎么把图片给压缩一下呢?压缩图片可以减小图片文件大小,从而节省存储空间和加快图片加载速度.这可以提高网站的加载速度和用户体验,特别是在移动设备上.压缩图片还可以减少网络流量和带宽的使用,节省服务器成本 ...

  6. Adobe Acrobat DC压缩方法以及网站分享

    上一篇分享了安装方法 这一篇顺便就把Adobe Acrobat DC压缩方法分享一下吧~ 一.Adobe Acrobat DC压缩方法 这是我本来的文件: 具体操作方法,即" 文件-另存为其 ...

  7. word文档太大如何压缩变小?今天分享3个压缩方法

    word文档是我吗在工作和生活中使用频率很高的文件,但是我们会遇到word文档太大导致无法打开和无法分享的情况,那么我们需要将word文档压缩变小.当word文档压缩变小之后,不仅可以节省我们磁盘空间 ...

  8. ACL 2020 | MobileBERT:一种与任务无关的模型压缩方法

    ©PaperWeekly 原创 · 作者|蔡杰 学校|北京大学硕士生 研究方向|问答系统 论文标题:MobileBERT: a Compact Task-Agnostic BERT for Resou ...

  9. BERT-of-Theseus:基于模块替换的模型压缩方法

    ©PaperWeekly 原创 · 作者|苏剑林 学校|追一科技 研究方向|NLP.神经网络 最近了解到一种称为"BERT-of-Theseus"的 BERT 模型压缩方法,来自论 ...

  10. 电脑上怎么做pdf文件_PDF压缩文件怎么压缩最小?请收好这些PDF压缩方法

    刚才想把手头上的一份PDF文件发给同事,直接拖进窗口就显示文件太大,超出了大小限制.还好我平时经常要处理PDF文件,这种情况下将PDF文件压缩一下就可以了.PDF文件怎么进行压缩呢?下面我就把常用的P ...

最新文章

  1. 了解大脑的“小情绪”,轻松成为“效率达人”
  2. [云炬python3玩转机器学习笔记] 3-2 Jupter Notebook魔法命令
  3. docker多个容器一起打包_如何链接多个Docker容器并封装结果?
  4. Java代理模式及其应用
  5. 大咖联袂发布 《慧技术·惠金融——2022金融科技趋势研究报告》开放下载
  6. 大数据、云计算、人工智能的融合应用分析
  7. 注销公司是否需要办理注销呼叫中心许可证?
  8. 快看!RobotArt如何降服四轴机器人?
  9. java实验报告6:异常处理程序设计
  10. centos7安装Kafka Eagle
  11. 南卫理公会大学 计算机排名,南卫理公会大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  12. 深入SpringBoot核心注解原理
  13. 如何设置chrome google浏览器字体
  14. [CodeForces877 E. Danil and a Part-time Job]dfs序+线段树
  15. 电脑中了virus.win32.sality.i和virus.win32.pioneer.c病毒,导致所以的EXE文件打不开(打开浏览器会提示:xc0000005异常)
  16. xshell开启终端256色(转)
  17. 如何独立开发一款 macOS 应用:从概念到上线
  18. python应用领域有开发操作系统吗_python 全栈开发,Day37(操作系统的发展史)
  19. 观点丨人工智能时代的区块链技术
  20. java中PageInfo类的作用及用法

热门文章

  1. 禁止拖放对象文本被选择的方法
  2. Windows Server 8 Beta 初体验之二:Hyper-v
  3. 读凤凰网经典语句记录一
  4. html标签的补充—— b,strong标签
  5. javascript实例:路由的跳转
  6. spark发行版笔记13
  7. IP地址的定义和含义
  8. fullCalendar:中文API
  9. redis学习总结2
  10. JS 将图片编码BASE64