首先通过httpWatch或Windb工具查找性能的瓶颈,在进行有针对性的优化,根据本人经验,不建议要求性能特别高的系统使用ORM相关的技术,不是说ORM不好,而是说相对而言其优化的空间有限,大部分都通过托管或者ORM去解析SQL,可能空间不大,不过其缓存机制还是很强大的,如果自己搞,会累吐血也不一定搞定的。
一、View(前端)的优化
1、 优化JS脚本,在_Layout页面去除不需要的CSS样式、图片、js的引用路径;
2、 采用压缩技术进行压缩,例如mvc4的压缩样式;
3、 异步加载前台下拉框或树形控件,按需加载;
二、DAL层的优化
1、 优化HQL语句,多采用HQL关联ManyToOne或者OneToMany的关系,尽量减少数据库的查询次数;HQL语句拼接:如 var hql +=XXXX,改成 StringBuilder方式进行hql 串接;
2、 杜绝in,exit等查询语句的存在,实在不行可以使用like或者indexOf来代替
3、 尽量减少“多”表查询,优化sql,可以把hql生产sql,在数据库执行来优化;
三、BLL层的优化
1、 使用LINQ进行操作时候,如果只有一条数据,则不用List.First()而采用List.Single()方式返回,整合相应的方法,方法不易过长,或过于复杂,进行充分的拆分与简化操作
2、 一次性拿到所需数据,在内存进行计算,数据内存持久化,缓存的使用;
四、数据字典的优化(Bll中接进来)
1、 使用缓存,或者内存中缓存数据字典信息,减少wcf交互次数;
2、 Wcf宿主使用windows服务等,内网尽量使用tcp协议,优化wcf策略,使用json串返回;
五、人员、单位主数据的优化
同上
六、查询条件异步加载数据字典
查询条件或者高级查询中包括数据字典的查询的话,注释掉该方法如下:
而采用异步加载的方式,也就是在点击下拉框的时候再加载数据字典
七、Css、js、图片的优化
1、 在App_Start文件增加BundleConfig类,里面写入你站点所需要的css和js,例如:
2、 在global中增加:
3、 Webconfig中增加:
4、 通过Vs.net的NulGet管理,下载WebGrease.1.6.0插件
八、其他
其实光从代码角度优化的空间不是很大了,其他的方面还是通过负载均衡,横向扩展应用服务器,通过更好部署策略来优化;
数据库采用分区、读写分库、集群等方式来增加数据的性能;
一句话,一堆低档的服务器换取网站的性能的策略是非常提倡的一种方式,也是最有效的一种方式;