asp代码优化,.net后端优化

  asp代码优化,.net后端优化

  (1)选择会话状态存储模式。

  在Webconfig文件中配置:

  sessionState mode=?stateConnectionString= tcpip=127 . 0 . 0 . 1:42424

  sqlConnectionString= data source=127 . 0 . 0 . 1;Trusted_Connection=yes

  cookieless= false time out= 20 /

  Asp.net有三种方法来存储会话状态信息:

  1.存储在进程中:属性模式=InProc

  特点:性能最好,速度最快,但不能跨多台服务器存储和共享。

  2.存储在状态服务器中:属性模式=StateServer

  特性:当需要跨服务器维护用户会话信息时,可以使用这种方法。

  但是,信息是存储在状态服务器中的,一旦状态服务器出现故障,信息就会丢失。

  3.存储在Sql Server中:属性模式=SqlServer

  特点:工作量会增加,但信息不会丢失。[/COLOR]

  补充一点:

  I .由于一些页面不需要会话状态,您可以禁用会话状态:

  代码如下:% @ pageenablesession state= false %

  二。如果页面需要访问会话变量,但不允许修改它们,可以将页面会话状态设置为只读:

  代码如下:% @ pageenablesession state= false %

  使用时可以根据具体情况选择一定的方式。

  (二)。使用页面。时

  页面。IsPostBack指示它是否从客户端返回。当它第一次运行时,它不会从客户端返回,它的值

  当页面上的事件被触发或页面被刷新时。IsPostBack变为true,因为它是回发;

  一般情况下:Page_Load方法,使用:

  私有void Page_Load(对象发送方,EventArgs e)

  {

  如果(!页面。IsPostBack)

  {

  .//初始化页面的代码。这些代码在页面第一次初始化时执行。当页面第二次被回发时,

  //不会再执行了。提高效率。

  }

  }

  我经常不得不使用IsPostBack,因为有些控件需要在初始化后保持它们的状态。

  比如DropDownList,如果每次都初始化,那么无论用户选择哪个选项,都会初始化为默认值。

  (三)。避免使用服务器控件

  1.一般静态显示信息,尽量不要用服务器端控件来显示。因为服务器端控件需要回发到服务器以供执行,

  会降低程序执行的效率。一般可以用DIV显示。

  如果使用服务器端控件,移除:runat=server 也会提高效率。

  2.禁用服务器端控件的状态视图。有些控件不需要维护其状态,可以设置其属性:EnableViewState=false

  如果整个页面控件不需要维护状态视图,可以将整个页面的状态视图设置为false:

  代码如下:%@ Page EnableViewState=false%

  3.在Web中配置。配置文件:

  ASP。NET会话可以在Web.config或Machine.config的Sessionsstate元素中配置.

  下面是Web.config中的设置示例:

  session state time out= 10 cookieless= false mode= in proc /

  (四)。避免使用数据网格

  每个人都知道数据网格是强大的。然而,虽然它功能强大,但却增加了性能成本。常规其他控件:数据列表

  或者中继器控制,尽量不要用DataGrid。

  (5).字符串操作

  1.避免包装操作。包装操作效率低下。

  例如,运行两个代码段:

  字符串测试=“”;

  for(for int I=0;我10000;我)

  {

  测试=测试I;

  }

  和

  字符串测试=“”;

  for(for int I=0;我10000;我)

  {

  test=test I . ToString();

  }

  下面这段代码显然效率更高。因为I是整数,所以系统需要将I装箱,转换成字符串后再连接。这需要时间。

  读者可以将其复制到自己的机器上进行测试。

  2.使用StringBulider类

  在字符串连接中:字符串str=str1 str2.

  一般来说,如果有三个以上的连接,最好使用StringBuilder而不是String class。StringBuilder可以避免再次创建String对象。

  性能损失。

  一般在组装Sql语句时使用:StringBulider。

  读者可以在自己的机器上测试。

  3.尽可能少用:

  尝试

  {}

  捕捉

  {}

  最后

  {}

  声明。这个语句的执行效率比较低。

  优化使用。阿多。网

  1.数据库连接被打开和关闭。需要时打开连接,访问数据库后立即关闭连接。

  例如,看两个代码片段:

  爱达荷(Idaho的缩写)

  数据集ds=新数据集();

  SqlConnection my connection=new SqlConnection( server=localhost;uid=sapwd=;database=north wind’);

  SqlCommand my command=new SqlCommand(strSql,my connection);

  sqldata adapter my adapter=new sqldata adapter(query str,connectionStr);

  我的连接。open();//打开连接

  for(int I=0;i 1000I)//用于数据采集前业务逻辑操作的循环模拟。

  {

  线程。睡眠(1000);

  }

  我的适配器。填充(ds);

  for(int I=0;i 1000I)//用于数据采集后业务逻辑操作的循环模拟。

  {

  线程。睡眠(1000);

  }

  我的连接。close();//关闭连接

  二。

  数据集ds=新数据集();

  SqlConnection my connection=new SqlConnection( server=localhost;uid=sapwd=;database=north wind’);

  SqlCommand my command=new SqlCommand(strSql,my connection);

  sqldata adapter my adapter=new sqldata adapter(query str,connectionStr);

  for(int I=0;i 1000I)//用于数据采集前业务逻辑操作的循环模拟。

  {

  线程。睡眠(1000);

  }

  我的连接。open();//打开连接

  我的适配器。填充(ds);

  我的连接。close();//关闭连接

  for(int I=0;i 1000I)///用于数据采集后业务逻辑运算的循环模拟。

  {

  线程。睡眠(1000);

  }

  显示码II比I码好多了,I早早就占了连接。如果用户很多,连接池很容易就满了。严重的时候就崩溃了。

  2.数据库查询

  I .直接生成SQL语句。Sql Server每次都要编译,所以性能不会有太大提升。况且还不够安全。容易受到攻击。

  二。使用带参数的SQL命令。这样,Sql Server只编译一次,编译后的命令可以重复用于不同的参数。提高性能。

  三。使用Sql Server存储过程。编译一次。它是独立的,易于修改和维护。可以一次完成多次发送语句的功能。它降低了网络的

  流动。存储过程不一定比语句更有效。如果业务逻辑很复杂,有时语句比存储过程更有效。

  (6)缓存优化

  有两种类型的缓存:页面缓存和API缓存。

  1.使用页面缓存和片段缓存。

  %@ OutputCache持续时间=5 VaryByParam=None%

  % @ output cache Duration=60 VaryByParam=" textbox 1,TextBox2" %

  描述:Duration是设置缓存的到期时间;

  VarByParam是设置是否根据参数而改变。无时,所有参数使用相同的缓存。

  设置TextBox1时,根据TextBox1的不同值进行缓存;当有多个参数时,缓存应该合并;

  2.API缓存。应用中使用。

  一.缓存使用示例:

  http://blog..net/chengking/archive/2005/10/03/494545.aspx

  二。注意页面之间的区别。缓存和HttpContext。当前。使用时缓存:

  它们指的是同一个对象。在Page中,使用Page。如果在global.asax或您自己的类中使用它,请使用:HttpContext。当前缓存

  在某些情况下,因为没有HttpContext,HttpRuntime。使用缓存。

asp代码优化,.net后端优化