如何压缩asp.net产生的viewstate
2011-02-21 10:42
357 查看
1. 在网站的app_code目录下面增加一个文件 ViewStateHelper.cs
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.IO.Compression;
/// <summary>
///ViewStateHelper 的摘要说明
/// </summary>
public class ViewStateHelper
{
public ViewStateHelper()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static 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();
}
public static 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();
}
}
2. 在需要压缩viewastate 的网页的后台文件里面增加代码
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 = ViewStateHelper.Compress(data);
string str = Convert.ToBase64String(compressedData);
ClientScript.RegisterHiddenField(" __MYVIEWSTATE ", str);
}
protected override object LoadPageStateFromPersistenceMedium()
{
string viewstate = Request.Form[" __MYVIEWSTATE "];
byte[] data = Convert.FromBase64String(viewstate);
byte[] uncompressedData =
ViewStateHelper.Decompress(data);
string str = Convert.ToBase64String(uncompressedData);
LosFormatter formatter = new LosFormatter();
return formatter.Deserialize(str);
}
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.IO.Compression;
/// <summary>
///ViewStateHelper 的摘要说明
/// </summary>
public class ViewStateHelper
{
public ViewStateHelper()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static 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();
}
public static 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();
}
}
2. 在需要压缩viewastate 的网页的后台文件里面增加代码
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 = ViewStateHelper.Compress(data);
string str = Convert.ToBase64String(compressedData);
ClientScript.RegisterHiddenField(" __MYVIEWSTATE ", str);
}
protected override object LoadPageStateFromPersistenceMedium()
{
string viewstate = Request.Form[" __MYVIEWSTATE "];
byte[] data = Convert.FromBase64String(viewstate);
byte[] uncompressedData =
ViewStateHelper.Decompress(data);
string str = Convert.ToBase64String(uncompressedData);
LosFormatter formatter = new LosFormatter();
return formatter.Deserialize(str);
}
相关文章推荐
- asp.net 2.0中通过压缩ViewState改善性能
- [翻译]asp.net 2.0中通过压缩ViewState改善性能
- asp.net 2.0中通过压缩ViewState改善性能
- asp.net 2.0中通过压缩ViewState改善性能
- 压缩ASP.NET中的ViewState
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState (转)
- [翻译]asp.net 2.0中通过压缩ViewState改善性能
- 压缩ASP.NET中的ViewState
- Asp.Net中压缩ViewState的2种方法
- 压缩ASP.NET中的ViewState的改进方法
- [翻译]asp.net 2.0中通过压缩ViewState改善性能
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState
- [翻译]asp.net 2.0中通过压缩ViewState改善性能
- 压缩ASP.NET中的ViewState
- asp.net 2.0中通过压缩ViewState改善性能
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState
- asp.net 2.0中通过压缩ViewState改善性能[收藏]
- Asp.Net 性能 ViewState 压缩的2种方法
- asp.net 2.0中通过压缩ViewState改善性能
- Asp.Net 性能 ViewState 压缩的2种方法