|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可怜的程序员,还是逃不出移植的命运!asp.net|成绩|功能|优化 网站的功能关于ASP.NET程序开辟职员来讲十分主要。一个优异的网站固然有美妙的页面计划,完美的服务功效,可是翻开网页时有长工夫的提早,用户终极将会没法忍耐。特别关于年夜型的电子商务网站而言,每秒钟无数万用户同时会见,没有优秀的网站功能,基本没法满意复杂的需求。
ASP.NET作为全新一代的静态网页天生体系,它在平台功能方面与原本的ASP比拟已有了一个实质的进步。但要在此基本上开辟出专业水准的、切合临盆尺度的、受用户接待的web使用程序,还必要开辟职员从编程的角度在页面、数据会见和字符串处置等各方面举行优化处置,以进步网站的整体功能。
本文将次要切磋在ASP.NET中与此相干的几种举行功能优化的办法及注重成绩。
页面功能优化
1、会话形态的得当选择
HTTP协定是一种无形态的通讯协定,没法纪录和辨认来自分歧客户真个哀求,但在实践使用中体系却要保护来自客户真个分歧哀求之间的会话形态信息。ASP.NET经由过程将会话形态信息存储在历程、形态服务器或SQLServer数据库中来办理这个成绩。
将会话形态信息保留在WEB服务器的内存中具有最好的功能,速率很快,可是却缺少会话形态信息超过多个服务器的才能。若要在多个WEB服务器之间保护会话信息,可使用形态服务器举行存储,这类体例因为能够将使用程序部署到多台服务器上而进步了体系的伸缩性和牢靠性,可是以下降功能为价值。关于极为主要的会话信息,必要利用SQLServer存储体例,从而制止丧失主要的会话信息,但由此发生的事情负载比前二者年夜很多。
若不思索形态信息的保存和多个服务器共享,应只管选择保留在服务器的历程中,从而失掉最好的功能。
会话形态信息的存储体例选择经由过程web.config文件:
<sessionState
mode="InProc/StateServer/SqlServer"//存储体例由此行选择
stateConnectionString="tcpip=127.0.0.1:42424"
……
timeout="20"/>
2、服务器控件的优化选择
2.1削减不用要的服务器控件
服务器控件带来的便利和功效是html控件所不克不及对比的。可是每个服务器控件都必要在服务器端创立响应的工具,是以就义服务器真个资本为价值的,过量的利用服务器控件会极年夜的影响程序功能。
良多情形下,复杂地利用html标志或数据绑定即可以完成所需功效。好比<asp:Label>控件,若利用它来显现静态信息,则完整可用复杂的标志来完成。假如html控件达不到所要完成的功效,并且在剧本言语如javascript、vbscript也不克不及完成的情形下,才思索选择服务器控件。
2.2禁用不用要的形态视图
服务器控件的形态视图属功能够主动的在页面往复过程当中保护服务器控件的形态,削减开辟者的事情量,可是必要占用大批的服务器内存资本。因而,在不必要服务器控件形态视图的情形下,应将其EnableViewState属性设置为false,如经常使用的<asp:Lable>和<asp:Button>控件。
2.3Page.IsPostBack的使用
Page.IsPostBack用于纪录页面是不是从客户端前往,若为false暗示初度运转,不然暗示从客户端再次前往该页面。Page.IsPostBack的公道使用能够制止页面在往复过程当中的一些不用要的操纵。在Page_Load函数及一些只必要初始化一次的事务函数中都可以利用该属性来进步使用程序功能。
voidPage_Load(Objecto,EventArgse)
{
if(!Page.IsPostBack)
{
conn=newSqlConnection("server=localhost;uid=sa;pwd=;database=data");
Stringsql="select*fromstudent";
cmd.Fill(ds,"stu");
mydataGrid.DataBind();
}
}
以上代码将包管只要在初次会见该页面时对数据库举行读取并绑定。
2.4公道利用DataGrid控件
DataGrid控件带有最壮大的数据显现功效,还内置了对数据的修正、删除、增加、分页等良多功效。假如只需复杂的显现数据,DataGrid并不是最好选择。DataGrid控件的分页功效,数据的存储体例(存储在viewstate中)等,固然让程序开辟者利用便利快速,但由此发生的功能开支不容藐视。
DataList控件比DataGrid功效少了良多。但自界说性强了良多。独有的多行数据显现仍是对照便利的。DataGrid能完成的功效,它基础能完成。
Repeater控件功效起码,但自界说性十分强。因为削减了良多功效,对服务器的功能带来损耗最小。
因而,在只需复杂显现数据列表时,选择Repeater或DataList控件一样能够到达目标,并且加重了功能上的开支。
数据库会见功能优化
1、数据库的毗连和封闭
会见数据库资本必要创立毗连、翻开毗连和封闭毗连几个操纵。这些历程必要屡次与数据库互换信息以经由过程身份考证,对照泯灭服务器资本。ASP.NET中供应了毗连池(ConnectionPool)改良翻开和封闭数据库对功能的影响。体系将用户的数据库毗连放在毗连池中,必要时掏出,封闭时发出毗连,守候下一次的毗连哀求。
毗连池的巨细是无限的,假如在毗连池到达最年夜限制后仍请求创立毗连,一定年夜年夜影响功能。因而,在创建数据库毗连后只要在真正必要操纵时才翻开毗连,利用终了后即刻封闭,从而只管削减数据库毗连翻开的工夫,制止呈现超越毗连限定的情形。
2、利用存储历程
存储历程是存储在服务器上的一组预编译的SQL语句,相似于DOS体系中的批处置文件。存储历程具有对数据库当即会见的功效,信息处置极其敏捷。利用存储历程能够制止对命令的屡次编译,在实行一次后其实行计划就驻留在高速缓存中,今后必要时只需间接挪用缓存中的二进制代码便可。
别的,存储历程在服务器端运转,自力于ASP.NET程序,便于修正,最主要的是它能够削减数据库操纵语句在收集中的传输。
3、优化查询语句
ASP.NET中ADO毗连损耗的资本相称年夜,SQL语句运转的工夫越长,占用体系资本的工夫也越长。因而,只管利用优化过的SQL语句以削减实行工夫。好比,不在查询语句中包括子查询语句,充实使用索引等。
字符串操纵功能优化
1、利用值范例的ToString办法
在毗连字符串时,常常利用"+"号间接将数字增加到字符串中。这类办法固然复杂,也能够失掉准确了局,可是因为触及到分歧的数据范例,数字必要经由过程装箱操纵转化为援用范例才能够增加到字符串中。可是装箱操纵对功能影响较年夜,由于在举行这类处置时,将在托管堆平分配一个新的工具,原本的值复制到新创立的工具中。
利用值范例的ToString办法能够制止装箱操纵,从而进步使用程序功能。
2、使用StringBuilder类
String类工具是不成改动的,关于String工具的从头赋值在实质上是从头创立了一个String工具并将新值付与该工具,其办法ToString对功能的进步并不是很明显。
在处置字符串时,最好利用StringBuilder类,其.NET定名空间是System.Text。该类并不是创立新的工具,而是经由过程Append,Remove,Insert等办法间接对字符串举行操纵,经由过程ToString办法前往操纵了局。
其界说及操纵语句以下所示:
intnum;
System.Text.StringBuilderstr=newSystem.Text.StringBuilder();//创立字符串
str.Append(num.ToString());//增加数值num
Response.Write(str.ToString);//显现操纵了局
ASP.NET使用程序功能测试
在对ASP.NET使用程序举行功能测试之前,应确保使用程序没有毛病,并且功效准确。详细的功能测试能够接纳以下工具举行:
WebApplicationStreesTool(WAS)是Microsoft公布的一个收费测试工具,能够从http://webtool.rte.microsoft.com/高低载。它能够摹拟成百上千个用户同时对web使用程序举行会见哀求,在服务器上构成流量负载,从而到达测试的目标,能够天生均匀TTFB、均匀TTLB等功能汇总呈报。
ApplicationCenterTest(ACT)是一个测试工具,附带于VisualStudio.NET的企业版中,是Microsoft正式撑持的web使用程序测试工具。它可以直不雅地天生图表了局,功效比WAS多,但不具有多个客户机同时测试的才能。
服务器操纵体系"办理工具"中的"功能"计数器,能够对服务器举行监测以懂得使用程序功能。
结论
关于网站开辟职员来讲,在编写ASP.NET使用程序时注重功能成绩,养成优秀的习气,进步使用程序功能,最少能够推延必须的硬件晋级,下降网站的本钱。我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了? |
|