ASP.NET重写ViewState的存储目的地,以提高页面性能

在 ASP.NET 中,ViewState 因为在客户端的 HTML 里占据大量的空间,并随 着页面的 PostBack 反复传递于网络中,一直为人垢病。但是实际上 ViewState 可以存储到数据库、缓存等任意地方,从而避免频繁将冗长的 base64 字符串发 送到客户端。这样做不但可以显著提高性能(大幅度减少了网络传输的字节数) ,而且如果其中的内容也不会被轻易解密和破解。因此这个方法是很有用处的。

以下写了一个简单的例子,用缓存来作为 ViewState 存储目的地。至于 缓存的 Key,文中给出的只是一个简单的写法,具体可以根据情况给出严密的方 案。

代码大致演示如下:

<%@ Page language="c#" Codebehind="SaveViewStateToOther.aspx.cs" AutoEventWireup="false" Inherits="LinkedList.SaveViewStateToOther" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
 <head>
   <title>SaveViewStateToOther</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name=vs_defaultClientScript content="JavaScript">
   <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">< br /> </head>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server"><asp:DataGrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 104px; POSITION: absolute; TOP: 72px" runat="server" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" PageSize="6" AllowPaging="True">
<selecteditemstyle font-bold="True" forecolor="#CCFF99" backcolor="#009999">
</SelectedItemStyle>

<itemstyle forecolor="#003399" backcolor="White">
</ItemStyle>

<headerstyle font- bold="True" forecolor="#CCCCFF" backcolor="#003399">
</HeaderStyle>

<footerstyle forecolor="#003399" backcolor="#99CCCC">
</FooterStyle>

<pagerstyle horizontalalign="Left" forecolor="#003399" backcolor="#99CCCC" pagebuttoncount="20" mode="NumericPages">
</PagerStyle>
</asp:DataGrid>

   </form>
 </body>
</html>

using System;
using System.Data;
using System.IO;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LinkedList
{
  /// <summary>
  /// SaveViewStateToOther 的摘要说明 。
  /// </summary>
  public class SaveViewStateToOther : Page
  {
    protected DataGrid DataGrid1;

    private void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)
         Bind();
    }

    private void Bind()
    {
      DataTable table = new DataTable();
      table.Columns.Add("id", typeof (int));
      table.Columns.Add("name", typeof (string));

      for (int i = 0; i < 1000; i++)
      {
        DataRow row = table.NewRow();
        row["id"] = i;
        row ["name"] = "student_" + i.ToString();
         table.Rows.Add(row);
      }
       DataGrid1.DataSource = table;
      DataGrid1.DataBind ();
    }

时间: 2024-10-30 05:55:41

ASP.NET重写ViewState的存储目的地,以提高页面性能的相关文章

ASP.NET小技巧:重写ViewState的存储目的地,以提高页面性能

asp.net|技巧|性能|页面 在 ASP.NET 中,ViewState 因为在客户端的 HTML 里占据大量的空间,并随着页面的 PostBack 反复传递于网络中,一直为人垢病.但是实际上 ViewState 可以存储到数据库.缓存等任意地方,从而避免频繁将冗长的 base64 字符串发送到客户端.这样做不但可以显著提高性能(大幅度减少了网络传输的字节数),而且如果其中的内容也不会被轻易解密和破解.因此这个方法是很有用处的. 以下写了一个简单的例子,用缓存来作为 ViewState 存储

asp.net中ViewState的用法详解_实用技巧

在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值.ViewState是一个名称/值的对象集合.当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值. 当我们在写一个asp.net表单时, 一旦标明了 form runat=server ,那

ASP.NET中的session存储模式运用

在asp.net中的Session存储方式不象asp那样单一,一共提供了三种存储方式,由于最近一个2000多人使用的web软件出现了故障,用户每天早上在某一时刻出现难以登陆现象,接着Session丢值出现,只有重启IIS,或机器.这时程序恢复正常了. 整天都不会出现同样的问题 ,但是第二天依旧!这种现象持续了好几天,我检查了一下日志文件,高峰每秒访问人数大概20人左右,同时大概100多人在线,以后访问人数还会增加,为了解决这个怪问题,先从软件着手,故而三种方式都应用了一番. 打开web.conf

VIEWSTATE的问题,想查看viewstate里存储的内容

问题描述 VIEWSTATE的问题,想查看viewstate里存储的内容 我想查看以下viewstate里存储的内容,但是为什么会报错?? 解决方案 这就是一个base64编码的字符串,你google"在线base64解码",把它贴进去就能看到了.

用ASP.NET缓存提高站点性能

asp.net|缓存|性能|站点 [简介] ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了.而缓存API则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存.本文全面介绍了这三种缓存技术在系统各层中的应用. 在ASP.NET提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的.相比ASP.NET的所有其他特性,缓

充分利用ASP.NET缓存提高站点性能

asp.net|缓存|性能|站点 [简介]ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了.而缓存API则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存.本文全面介绍了这三种缓存技术在系统各层中的应用. 在ASP.NET提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的.相比ASP.NET的所有其他特性,缓存

利用ASP.NET的三种缓存提高站点性能

asp.net|缓存|性能|站点 ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了.而缓存API则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存.本文全面介绍了这三种缓存技术在系统各层中的应用. 在ASP.NET提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的.相比ASP.NET的所有其他特性,缓存对应用程

asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.aspx的Send提交按钮时,这个时候会action到Default2.aspx页面,在这个时候就报错了,报的错误是:Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, e

充分利用ASP.NET的三种缓存提高站点性能

[简介] ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了.而缓存API则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存.本文全面介绍了这三种缓存技术在系统各层中的应用. 在ASP.NET提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的.相比ASP.NET的所有其他特性,缓存对应用程序的性能具有最大的潜在影