译完了提高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. 使用WIF实现单点登录Part III —— 正式实战

    我们接下来的demo将包括以下的工程: SiteA —— 基于.net framework 4.5的MVC 4程序,使用WIF 4.5的SDK,第一个RP SiteB —— 基于.net framew ...

  2. static关键字的作用

    static可以用来定义静态成员变量.静态函数.静态代码块. 静态成员变量的语法特点 定义方法:在成员变量前面加上static class Person{ static int i; //静态成员变量 ...

  3. hdu1007

    Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some ...

  4. Cron表达式说明

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  5. EXCEL处理数据小技巧

    1.EXCEL 中如何获得4*8这个数字中,*号前面的数字 输入  =LEFT(AC2,FIND("*",AC2)-1) 获得*右边的数字 输入 =RIGHT(AC2,FIND(& ...

  6. hdu 1718 Rank

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1718 Rank Description Jackson wants to know his rank ...

  7. iOS学习之UITabBarController

    一.标签视图控制器——UITabBarController 1.UITabBarController的继承关系: @interface UITabBarController : UIViewContr ...

  8. Linux下如何使CP命令不提示覆盖

    在Linux下使用CP命令,经常会提示是否覆盖,如果是太批量的文件覆盖,老是这么提示,会很烦的.那如何解决这个问题呢? 我们先来看一下原因吧! 一般我们使用的命令是cp -rf sourcefile ...

  9. 上传图片的回调函数,callback作为一个函数针对回调函数

    Tool.ImageUpload = function (selector, callback) { /// <summary>图片上传</summary> /// <p ...

  10. GHOST -ntexact 正常还原

    我常常用PE启动电脑,用PE下的GHOST软件恢复备份的系统,但最近恢复WIN10备份时出了问题,出现25002错误,恢复其他备份正常,原因不明 解决办法是在PE中运行CMD,启动DOS,然后进入GH ...