1、服务器优化
视窗系列:
64位Win2008r2+Hyperer-V+负载均衡+IIS7.5
64位Win2003+虚拟机+负载均衡+IIS6
禁止服务器访问外网。关闭不必要的端口。
删除每个磁盘的所有权限,只保留管理员组和系统完全控制权限。
IIS7.5标志使用ApplicationPoolIdentity,具有目录权限的用户为:IISAppPool\站点名称
IIS6需要为每个站点创建独立的用户,并为IIS用户单独设置权限。
IIS禁用日志记录。
2.数据库优化
l64位MSSQL2008:
使用更少的触发器/光标/外键。存储过程和视图的多种用途。适当地使用索引将会使查询速度提高很多。每个表上的索引尽量不要超过3个。
定期检查并清除死锁进程和等待进程,及时纠正死锁根源。
复杂的统计报告需要规划才能运行。
要查询记录数,请使用count(0)而不是count(*)。
选择表字段时不要使用*。*查询所有字段非常慢。
如果字段是索引列,可以使用UNIONALL代替OR,通过索引路由查询。
对大型记录集使用分页查询。
尽量不要使用TEXT/NTEXT类型,使用VARCHAR(MAX)/NVARCHAR(MAX)。
尽量不要使用临时表,使用Table表类型或者嵌入视图。
3、后端优化
l多使用DbDataReader,尽量不要使用DataTable/DataSet读取数据。
lfor(inti=0;idt.Rows.Count;i++)应该这样写:
for(inti=0,len=dt.Rows.Count;ilen;i++)或
foreach(dt.Rows中的DataRowinfo)推荐这种写法
l尽量少用trycatch,使用trycatch时与finally一起使用。
l经常使用,例如:
使用(DbDataReaderdr=Data.GetDbDataReader(strSql)){while(dr.Read()){};}
l对于大字符串操作请使用StringBuilder。少用字符串。使用Compare进行字符串比较,使用Concat进行字符串相加,使用StringBuilderAppend进行大字符串相加。
l变量在使用前必须先定义。不要在循环内定义变量。喜欢:
错误的写法是:for(inti=1;i10;i++){strings=i.ToString();}
正确写法:strings=string.Empty;for(inti=1;i10;i++){s=i.ToString();}
这里还有一点需要注意的是:在添加字符串时,如果有int类型,在添加之前必须转换为string类型,以减少不必要的装箱和拆箱操作。
l如果使用的是HTML控件,需要禁用%@页面EnableViewState='false'AutoEventWireup='false'EnableSessionState='false',web.config页面enableViewState='false'enableSessionState='false'/
l使用foreach代替for
l使用存储过程/视图来操作数据库。
l使用CACHE来缓存数据。这是最重要的。NET提供:HttpContext.Current.Cache/HttpRuntime.Cache,共享缓存为velocity/memcached
l可以使用%@OutputCacheDuration='60'来缓存页面,也可以使用Response.BufferOutput=true;/%@PageBuffer='true'来输出缓冲区。
l站点可以生成静态页面,这样有很多好处。
l可将URL重写为伪静态,提供rss/baidu-sitemap/google-sitemap服务,有利于搜索引擎收录。
lAjax调用页面必须使用.ashx通用处理程序,它比.aspx文件速度更快。Ajax请求应使用POST而不是GET。
l发布站点时,DLL必须是Release版本,而不是Debug版本。
lIIS需要使用集成模式,不要使用经典模式。
l在Web.config中添加customErrorsmode='On'/关闭错误提示。
l在Web.config中添加compilationdebug='false'/关闭调试模式。
l使用Server.Transfer代替Response.Redirect
l多使用通用集合操作,少用ArrayList。
4.前端优化
l页面最好不要使用.NET控件,使用HTML控件,使用CSS+DIV布局。
l使用JSON+AJAX进行数据交互。
l学习使用jQuery来提高开发速度。
l尽量少用img标签,用background样式来控制背景图片。这样做的好处是方便扩展多个皮肤。
l将多张CSS背景图片合并为一张图片,保证合并后的图片大小不超过50K。可以将JS文件合并为一个JS文件,然后使用closure_packer_yui_compiler进行压缩。这样做的好处是可以减少客户端连接数。
lJS代码片段不应该放在HTML页面中,而应该放在独立的JS文件中。优点是JS文件可以CDN/缓存。
l可以将CSS文件放置在head/head之间,将JS文件或代码放置在/body之前,这样页面就会在JS执行之前显示。
l您可以将网站的图片/CSS/JS/数据/资源放到单独的站点中,并使用CDN加速。二级域名会有COOKIES。最好使用一级域名。
lA标签和IMG标签需要添加title/alt,head标签需要添加title/keywords/description/rss/sitemap优化,有利于搜索引擎收录。
l页面可以启用gzip压缩。
l安装FF插件“YSlow/PageSpeed”。
5.其他优化