web站点性能优化
最后编辑时间:2017年2月15日15:40:29
1、前端代码:
a) 【减少请求】独立出一个静态站专门部署JS、CSS、图片;好处就是页面加载的时候不用从同一个站点请求,因为从同一个站点请求是有数量限制的(最新的各种浏览器一般是6个或者8个)
b) 【减少请求】文件合并,比如CSS中icon图标合并为一张大图,静态文件合并请求(参考京东的方式,需要nginx配置,据说最初来自于淘宝)
c) 【减少流量】js、css文件压缩、合并;
1,不建议使用统一的头模板,公用文件中的代码应尽可能的为公用功能,否则应放到页面单独的js文件中
2,js应尽量写到文件中,带上版本号,方便更新;静态文件是会缓存到本地的,写到文件中的话就不用反复下载
d) 【用户体验】使用异步加载图片(页面加载完成后慢慢加载或者滚到的时候加载),增加异步的操作(AJAX)等
2、后端代码:
a) 使用缓存,缓存的使用就是为了减少数据库的压力,因此不能乱用,也不是越用越好,否则反而可能更慢
b) 异步任务,比如发短信、邮件等处理时间较长,可能造成用户等待的功能可放到异步任务中处理;原理:先将要处理的数据存起来,放到后台慢慢运算;我们可以使用消息队列、缓存等方式实现
c) 数据库脚本优化,性能优化的重心,基本就在这上面了;缓存、异步这些弄好之后,我们以后基本不用动,只要用就可以了,脚本每天都在写,说不定哪天上线就造成了整个网站变慢
1,勤拿少取的原则:即每次取数据的时候尽量少,可以分多次取;可以提升速度,结果就是可能产生大量的连接
2,减少连接:看似和第一条矛盾,在实际运用中是要分情况的;循环调数据的情况绝对要避免
3,减少流量:切忌SELECT *这种,要根据情况取需要字段,例如,列表中查询的时候一定要把详情的字段去掉
4,复杂查询:还是在数据库中优化完之后再放到程序中吧;WITH (NOLOCK)在可以带的时候带上,UPDATE 是会锁表的,这时候查询就需要等待;数据库不应该有太复杂的查询,否则应该把数据分开查出来之后放到程序中处理
5,不建议使用存储过程:不好维护,比如stackoverflow就不使用存储过程
3、服务器:
a) 负载服务器;后期的负载均衡肯定是要做的
b) 数据服务器;读写分离,合适的索引,分库
c) 主站服务器;
d) 静态站点独立服务器
e) 缓存服务器
f) 异步任务、定时任务服务器