关于网站性能的优化

程序编码优化 :集合操作、字符串连接、类型转换等。

         集合优化: ArrayList BitArray Hashtable Queue SortedList Stack ListDictionary NameValueCollection OrderedDictionary StringCollection List<T> 及数据等,要了解各个集合的特性,选择合适的集合。在所有的集合中数组是性能最高的,如果要存储的数据类型一致和容量固定,特别是对值类型的数组进行操作时没有装箱和拆箱操作,效率极高。

         选择集合类型时应该考虑几点:

1,  集合中的元素类型是否是固定的,比如集合中将要存储的元素都是 int 或者都是 string 类型的就可以考虑使用数组或者泛型集合,即使是引用类型的元素也可以避免类型转换操作。

2,  集合中的元素个数是否是固定的,如果是元素类型一致并且个数固定,可以考虑使用数组。

3,  将来对集合的操作集中在那些方面,如果对集合的操作以查询居多可以考虑 HashTable 或者 Dictionary<Tkey,TValue> 这样的集合,在查找时比较的次数比其他集合要少。

4,  在使用可变集合时如果不指定初始容量大小,系统将会使用一个默认值来制定可变集合的初始容量大小,如果将来元素个数超过容量大小就会先在内部重新构建一个集合,再将原来集合中的元素复制到新集合中,可以在实例化可变集合时指定一个相对较大的初始容量,这样在向可变集合中添加大量元素时就可以避免集合扩充容量带来的性能损失。

         字符串优化:考虑使用 StringBuilder 对象。

         类型转换优化:在开发中经常会遇到类型转化的问题,一种情况是由字符串类型转成数值类型,另一种情况是存在继承关系或者实现关系之间进行类型转换。 在上面的两种转换中如果存在不能转换的情况,则会抛出异常,在引发和处理异常时将消耗大量的系统资源和执行时间。引发和处理异常是为了确实处理异常情况,而不是为了处理可预知的时间或控制流(这一点尤其注意,不要在代码中来使用异常进行流程控制。) 在字符串与值类型的转换时考虑 TryParse() 方法。引用类型之间的转换有两种方式:强制转换和 as 转换。同字符串类型转换成数值类型一样,如果不存在对应的转换关系也会抛出异常。为了避免引用类型之间转换抛出异常,可以使用 as 关键字来转换。

         Server.Transfer() 方法 :使用 Server.Transfer() 方法实现在同一应用程序下不同页面间的重定向避免不必要的客户端页面重定向。它比 Response.Redirect() 方法性能要高,并且 Server.Transfer() 方法具有允许目标页面从源页面读取控件值和公共属性值的优点。由于调用了这个方法之后浏览器上不会反应更改后的页的信息,因此它也适合隐藏 URL 的形式向用户呈现页面,不过如果用户点击了浏览器上的 后退 按钮或者刷新页面有可能导致意外情况。

         尽早释放对象: .Net Framework 中有很多类实现了 IDisposable 接口,实现了 Idisposable 接口的类都会有一个 Dispose() 方法,当这些类的实例不再使用时,应及早调用该类的 Dispose() 方法以释放所占的资源。

         尽量减少使用服务器控件的使用: 服务器控件在编程中使用起来确实方便,但是这种方便时牺牲了一定的性能为前提的,比如需要在页面的某个地方显示一个字符串,这个字符串在任何时候都不会发生变化,那么可以在 HTML 代码中直接输出,还有有些表单要实现点击按钮之后清空表单输入,利用 HTML 中的重置按钮就可以完成这个功能,都没有必要使用服务器控件。

 

 

数据操作优化 :数据操作优化主要是数据访问优化,主要有数据连接对象使用、数据访问优化、优化 SQL 语句、使用缓存等。

         数据库连接对象使用优化 :对于数据库连接使用始终遵循的一条原则是:尽可能晚的打开数据库连接,尽可能早的关闭数据库连接。除此之外,还可以使用数据库连接池来优化。连接到数据库通常需要几个需要很长时间的步骤组成,如建立物理通道(例如套接字或命名管道)、与服务器进行初次握手、分析连接字符串信息、由服务器对连接进行身份验证、运行检查以便在当前事务中登记等等。使用数据库连接池技术可以减少这些开销。默认情况下 ADO.NET 中启用连接池。除非显示禁用,否则,连接在应用程序中打开和关闭时,池进程将对象进行优化。例 :Data Source=(local);initial Catalog=AspNetStudy;User ID=sa;Password=sa;Pooling=true;Min Pool Size=0;Max Pool Size=200

         数据访问优化 :如果对数据库中的书籍不是需要经常读取,可以使用相应的 DataReader 对象来读取(如 SqlDataReader OleDataReader OracleDataReader ),在这种情况下使用 DataReader 对象会得到一定性能的提升。此外,在数据访问时还可以使用存储过程。使用存储过程除了可以防范 SQL 注入之外,还可以提高程序性能和减少网络流量。存储过程是存储在服务器上的一组预编译的 SQL 语句。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就在高速缓存中,以后需要时只需直接用缓存中的二进制代码即可。

         优化 SQL 语句 :在开发中除了从 C# 代码方面优化数据访问之外,还可以从 SQL 语句上优化数据访问。在优化 SQL 语句时,有几条原则需要注意:

1,  尽量避免 ”Select * from 表明 这样的 SQL 语句,比如针对 SQL Server 数据库来说,如果不需要显示或者操作表中的 image Text ntext XML 这样的字段,就尽量不要出现在 select 语句中的字段列表中。

2,  尽量不要再查询语句中使用子查询。

3,  尽量使用索引。索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。设计良好的索引可以减少磁盘 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询的性能。

合理使用缓存 Cache

配置优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值