译完了提高Asp.Net应用程序的十大方法这篇文章,仔细想其中提到的每一条,在这里结合我的项目来谈谈.
第一条:返回多个结果集
因为我的项目中所有对数据库的访问的sql语句都是通过调用存储过程实现的,所以基本上都是用一个存储过程完成返回多个结果集,来得到自己想要的数据.满足!!
第二条:对数据进行分页
我写了一个通用的分页存储过程,用于对显示的数据进行分页,参照了原来Dino Esposito 的分页思想写的,写成了一篇项目总结发表在CSDN上.经过几个项目后,发现分页的效率取决于用于分页的条件,一般情况下,用索引字段的来作条件分页的效率是最高的,所以在以后的项目中,要注意分页的效率.查了一下csdn中的分页存储过程,"风云"的那个分页存储过程比较通用,而且效率也高.决定以后用它的那个了.
网址:http://community.csdn.net/Expert/topic/3587/3587201.xml?temp=.6331598
CREATE PROCEDURE sp_page
@tb

varchar(50), --表名
@col

varchar(50), --按该列来进行分页
@coltype
int,

--@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
@orderby
bit,

--排序,0-顺序,1-倒序
@collist
varchar(800),--要查询出的字段列表,*表示全部字段
@pagesize int,

--每页记录数
@page
int,

--指定页
@condition varchar(800),--查询条件
@pages
int OUTPUT --总页数
AS
/*
功能描述:对指定表中满足条件的记录按指定列进行分页查询,分页可以顺序、倒序
查询可以指定页大小、指定查询任意页、指定输出字段列表,返回总页数

者:pbsql

本:1.10
最后修改:2004-11-29
*/
DECLARE @sql nvarchar(4000),@where1 varchar(800),@where2 varchar(800)
IF @condition is null or rtrim(@condition)=''
BEGIN--没有查询条件
SET @where1=' WHERE '
SET @where2=' '
END
ELSE
BEGIN--有查询条件
SET @where1=' WHERE ('+@condition+') AND '--本来有条件再加上此条件
SET @where2=' WHERE ('+@condition+') '--原本没有条件而加上此条件
END
SET @sql='SELECT @pages=CEILING((COUNT(*)+0.0)/'+CAST(@pagesize AS varchar)+
') FROM '+@tb+@where2
EXEC sp_executesql @sql,N'@pages int OUTPUT',@pages OUTPUT--计算总页数
IF @orderby=0
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
' FROM (SELECT">'+@tb+@where1+@col+'>(SELECT MAX('+@col+') '+
' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
@col+' FROM '+@tb+@where2+'ORDER BY '+@col+') t) ORDER BY '+@col
ELSE
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
' FROM '+@tb+@where1+@col+'<(SELECT MIN('+@col+') '+
' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
@col+' FROM '+@tb+@where2+'ORDER BY '+@col+' DESC) t) ORDER BY '+
@col+' DESC'
IF @page=1--第一页
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+' FROM '+@tb+
@where2+'ORDER BY '+@col+CASE @orderby WHEN 0 THEN '' ELSE ' DESC' END
EXEC(@sql)
GO

第三条:连接池
默认情况下,.NET是使用连接池来管理连接的.所以在项目上注意两点:一个是以构造一个类,专门用于返回连接字符串或连接对象,这样要以保证连接字符串是相同的,才能有效的利用连接池.另一个是用完连接后马上关闭边接.
第四,五,七条:充分利用Asp.Net中的各种缓存技术(文章的第四,第五,第七个方法都是用了缓存)
原来的项目中,用过一次页面输出缓存,但是没有成功,因为页面要提交,所以不能及时响应事件.就把它下掉了.开始以为是用缓存的问题.通过这篇文章,才知道是自己不知道怎么用.所以这段时间就在看有关怎么利用缓存的资料.应该好好的了解缓存的用法.这样,才能更有效的提高应用程序的效率.如果你也想了解缓存的技术,我找到了以下的几篇文章,它们都在Msdn中文网上:
ASP.NET 缓存:方法和最佳实践:
http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx
在 ASP.NET 中支持数据库缓存相关性:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/DbCacheDepASPNET.mspx
使用缓存,节省资金:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspnetasp11022004.mspx
为 ASP.NET 创建缓存配置对象:
http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/CreatingaCacheConfigurationObjectforASPNET.mspx
还有一本微软的蓝皮书:
Improving .NET Application Performance and Scalability
应该说这一本书是最全,最好的指南了.第六章有一节专门讲缓存及缓存应用指南的.正在看这一章.
第六条:在后台处理
这是我接触到的一个新的解决方案,原来asp.net中也可以作后台的定时触发功能.以后肯定能用上.上面列出的
使用缓存,节省资金:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspnetasp11022004.mspx
这篇文章就使用了这一种技术,很有参考价值.
第八,九条:用IIS6的新功能
原来一直没有注意IIS6,都是用IIS5,看来服务器应该升级了.
第十条:有条件的使用ViewState
一直都没注意ViewState,看来以后只要没有必须使用ViewState的时候就要把它关掉,特别是用到了DataGrid的页面.

总的看来,其中用Cache能更好的提高应用程序的性能,如果用到数据库,记得要充分利用连接池,高效率的分页;如果用的是windows 2003就不要忘了开它的Kernel Caching.最后也不要忘了关不用ViewState的页面或控件的EnableViewState属性.

提高Asp.Net应用程序性能的十大方法(译感)的更多相关文章

  1. 提高ASP.NET应用程序性能的十大方法

    一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...

  2. 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧

    性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...

  3. 提高 ASP.NET Web 应用性能的 24 种方法和技巧(转载)

    在这篇文章中,将介绍一些提高 ASP.NET Web 应用性能的方法和技巧.众所周知,解决性能问题是一项繁琐的工作,当出现性能问题,每个人都会归咎于编写代码的开发人员. 以下为译文 那性能问题到底该如 ...

  4. 提高ASP.NET首页性能的十大方法

    本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: http://www.cnblogs.com/xiachufeng/archive/2011/11/09/2242130.h ...

  5. .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  6. 提高 ASP.NET Web 应用性能的 24 种方法和技巧

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  7. 提高ASP.NET Web应用性能的24种方法和技巧

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  8. 细数改善WPF应用程序性能的10大方法

    WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...

  9. 改善WPF应用程序性能的10大方法 (转发)

    WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...

随机推荐

  1. Firbird 将可 null 的列更新为 not null

    在GOOGLE上搜到2种方法:   第一种是新加一列 C2, 然后 update myTable set C2=原字段,再删除[原字段], 但这种方法有限制,当很多其它表引到此表时,非常麻烦.   第 ...

  2. Oracle自用脚本(持续更新)

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  3. 对ASP.NET Entity FrameWork进行单元测试

    添加一个测试用的类库:将Web.config中的connectionstrings节点下的东东复制一份到刚添加的类库的app.config下 使用NUint+TestDriven.net进行测试: 如 ...

  4. MongoDB 学习笔记(二)—— MongoDB Shell

    MongoDB自带一个JavaScript shell 可以从命令行中与MongoDB交互,功能非常强大.如在上一节最后一张图所看到,可以执行JavaScript程序. 运行Shell 前提是启动Mo ...

  5. 手动书写小代码-foreach实现机制

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  6. Jquer的三种初始化方式

    $(document).ready(function(){ alert(200); }); jQuery(function($){ alert(100); }); $(function(){ aler ...

  7. poj 3061 Subsequence

    题目连接 http://poj.org/problem?id=3061 Subsequence Description A sequence of N positive integers (10 &l ...

  8. iTiTa再次回归,这一年我们都在干什么?

    转眼一看这都2013年了,距离我们上一次发布篮球游戏已经一年多了. 从去年到今年我们几乎只做了一件事——<二战前线>! 这一年的时间从最简单的游戏游戏雏形到今天一个具备商业能力的游戏,一路 ...

  9. php读取xml文件内容,并循环写入mysql数据库

    <?php $dbconn = mysql_connect("localhost","root","root"); $db = mys ...

  10. Couchbase server---Enyim.Caching.dll

    本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...