最近做了个WEB网站,刚开始还好,可是后来越来越慢,特别是调试模式下,本地运行不调试模式下也挺慢的,这肯定是我们的代码有问题,但是即使业务不是很复杂的也很慢,我们就想当然的认为我们的代码没问题,可最后证明还是我们的代码有问题。我也挺佩服我怎么忍受的了的,这个也是我们不能如期完成的主要原因,大家都因为慢,很降低我们的积极性,往往写几句代码调试要话好长时间,所以大家都愿意干点其他的。
先列几点我知道的可以从哪方面入手优化的东西。
从前台入手
1.减少HTTP请求
可以减少JS和CSS文件的个数,把几个合并在一起。减少不必要的图片存在,服务器传过来HTML文档后,浏览器在解析的时候,遇到img便签,会发生HTTP请求去获取图片。
2.使用浏览器缓存
一个网站他的样式几乎是一样的,所以内容是相同的,如JS、CSS和图片等,像这些东西就可以放缓存里,下次读缓存就行。
3.图片或者flash资源预加载
有时一个页面有很多图片和flash资源,如果都一起加载的话,那速度很慢,影响用户使用心情,所以就可以预加载这些资源,提高用户体验度。
从代码方面入手
1.少循环,尽量杜绝嵌套循环
有的业务十分复杂,按常规思维写的话,会出现很多循环,甚至嵌套好几层循环。写代码时三层以上的绝对不要有,如果数据量不大的前提,两层三层的可以少有。
2.杜绝全局变量、静态变量,少用锁
尽量杜绝全局变量、静态变量,所有人都操作一份数据,这就会有数据不统一的情况。不要轻易对一个资源加锁,如果对一个资源加锁,下一个人得等上一个人使用完,如果是频繁的访问这个资源,则效率会大大降低。
3.减少数据库链接
与数据库打一次交到就打开一个连接,也不主动释放,这是不可取的。如果每次打开链接在关闭链接,这样也是不好的。可以使用已有的链接,没有已有链接才打开一个链接。
4.使用外部的JS和CSS
将内联的JS和CSS写成外部的JS和CSS,减少重复下载内联的JS和CSS。
数据库的优化
数据库优化也有多值得学习的地方,这里没有深入的研究,就大概写写自己暂时知道的一些。设计数据库的时候要遵循数据库三范式,但不是要求严格遵循,如有时也会要写必要的冗余来达到效率的提高。如果要写SQL语句,要杜绝in,in就相当于代码里的循环,当数据越来越多时,那会很影响效率的。如果用到了ORM相关的,自然中大部分实体都是相关联的,但并不是有点关联就要建立映射关系,那会十分影响效率,只有关联十分密切的才建立关联关系,不然你查询孙子,你就可能把它的父母、爷爷、祖父等都会查询出来,所以也少用关联映射来查询内容。
最后,关于性能优化是一个很大的方面,有很多东西值得我们学习,上面只是最近一点点的感触,欢迎大家有其他相关的东西与我分享。
如果想知道我们项目从哪一点优化的,请关注我下篇博客