ASP.NET错误处理和程序优化

2014 年 10 月 22 日2390

服务器控件
.提供了清晰的编程模型(重用,简洁,宜用)
–创建ASP.NET 页面所倡导的模式
.对性能优化而言有两点需要注意:
–ViewState
–控件数量

ViewState 管理

. ASP.NET controls 能够维护页面Control元素的状态
– 状态以“viewstate” hidden field进行传递
. 负面影响:
– 增加网络负荷(both on render and postback)
– 额外的服务器性能消耗(serialize values to/from viewstate)
. Viewstate灵活性:
– 页面级(Can disable viewstateentirely for a page )
– 控件级(Can disable viewstateusage on a per control basis )
. 建议:
– 认真审核该功能的使用
– 若不使用PostBack功能,请在页面级屏蔽ViewState
– PostBack时每次都重新生成控件,请对控件级的ViewState屏蔽
– 使用<%@ Page Trace=“true” %>跟踪ViewState的大小

有关ViewState管理提示
.如果您希望更明确的限制viewstate 的使用,可将
ASP.NET 配置为默认情况下处于关闭状态
.Machine.config:
<configuration>
<system.web>
<pages enableViewState=“false”/>
</system.web>
</configuration>
.之后需要viewstate 的页将在页面指令中手动对其进
行设置:
–<%@ Page EnableViewState=“true”%>

生成的控件数量
.页面上的每个服务器控件的生成都存在固定的
成本
–每个控件的成本通常可以忽略不计
.复合控件有时可以屏蔽使用的控件数量,尽管
会出现以下情况
–聚集成本有时可以累加
–打开ASP.NET Trace即可查看实际计数

议程
.错误类型以及处理方式
.提高数据访问性能
.服务器控件的使用
.使用缓存进行程序优化
.提高性能的实用技巧

缓存技术
1、什么是缓存技术?
缓存是计算机快速地再次获得数据地方式。
2、缓存原理
将经常访问地数据存储到计算机可以更快、
更容易地读取地位置。

3、ASP.NET中缓存的位置
客户端缓存
客户
服务器
①从服务器读取数据
②缓存到硬盘
③以后访问读取
硬盘数据

服务器缓存
服务器 ASP.NET 引擎
ASP.NET 引擎
客户
③随后的请求直接
从缓存中取数据
①从ASP.NET 中发送数据
②缓存数据

4、什么时候用缓存?
不要缓存用户随时都会
修改的对象,如购物车
不要缓存包含时间的页

缓存整个应用程序都要
使用的设置或对象(但
这些设置和对象必须在
其生存期内不变化)
不要缓存个人信息,以
防止别人盗用
缓存那些经常被访问、
并且变化不大的数据
不应该使用缓存的情况使用缓存的情况

5、如何使用缓存?
.ASP.NET有两种用于WEB应用的缓冲技术:输
出缓冲和数据缓冲。
–输出缓冲指:把一次请求所产生的动态输出保存于内
存中。
–数据缓冲指:按照一定的策略把事先不确定的对象保
存于内存中。
.输出缓存的使用
–使用@OutputCache指令
–例如(添加在页头)
<%@ OutputCacheDuration= “10”VaryByParam=“None”%>

DEMO4
输出缓存练习

数据缓存
.ASP.NET提供了一个相当出色的缓存引擎
机制,它允许页面保存和索引HTTP请求所
要求的各种各样的对象。ASP.NET的缓存
对各个应用来说是私有的,是存储各种对
象的存储器。缓存的生存周期取决于应用
的生存周期,也就是说,当应用重新启动
时,缓存实际上也已重建。

.数据缓冲
–使用(类似于Session变量的使用)
Cache[“userName”] = “MeMe”;
Response.Write(Cache(“userName”));
–注意不能通过下标访问缓存中的变量,如
Response.Write(Cache[0]);是错误的。
–缓存的删除
Cache.Remove(“userName”);

.使用缓存依存关系
–缓存变量的添加
.Cache.Add()
.Cache.Insert()
它们功能相同,但Insert更加灵活一些
–Insert
(key,value,dependencies,absoluteExpiration,
slidingExpiration,priority,priorityDecay,onRem
oveCallBack)

缓存替换策略
1. “腐烂搜索”(Scavenging)
.当内存变得比教紧张时,缓存机制会找出最
不常用和最不重要的对象,把它从内存中移
出,以减轻系统压力。
2. “到期控制”(Expiration)
.编程者可以指定缓存对象的生存周期,这种
指定的时间可以是绝对的也可以是相对的。
3. “文件和键值依赖”
.从外部文件或者是其他缓存键值是否改变,
来决定本身键值是否有效。

DEMO5

数据缓存

议程
.错误类型以及处理方式
.提高数据访问性能
.服务器控件的使用
.使用缓存进行程序优化
.提高性能的实用技巧

提高性能的实用技巧
.不要使用不必要的Session,和ASP中一样,
在不必要的时候不要使用Session
.不使用不必要的Server Control
.不使用不必要的ViewState
.不要用Exception控制程序流程
.禁用VB和Jscript动态数据类型
.使用存储过程完成数据访问
.只读数据访问不要使用DataSet
.关闭ASP.NET的Debug模式
.使用ASP.NetOutput Cache 缓冲数据

提高性能的实用技巧
.尽量用SQL返回DataGrid需要绑定的DataSet,尽量不
要对DataSet进行二次加工,特别不要对DataSet进
行大量删除,实践证明这很慢。不如复制部分数据。
.尽量把查询数据的数据库操作次数压缩到最少,尽量
1-2次数据库操作就可完成;
.注意优化数据库查询操作
.不要在页面加载时默认选择全部数据,尽管可以方便
后续操作,但用户会以为“还没有操作就这么慢”
.建议尽量用比较高效的SQL代替后续复杂的DataSet
二次加工

提高性能的实用技巧
.仅在需要的时候打开数据库连接
.一旦数据库操作完毕,一定关闭连接
.在关闭连接时记得删除临时对象
.在关闭连接前,确保关闭任何用户定义事务
.显示非交互性数据,使用SQLDataReader可以获得
最佳性能
.注意共享那些经过复杂处理或漫长查询才得到的数据
.在页面跳转时记得终止当前页面的处理
.有大量连接的字符串操作不要使用+,改用
StringBuilder

1

0 0