1.Minimize HTTP Requests 减少http的请求
合并文件 雪碧图
2.Use a Content Delivery Network 利用CDN技术
CDN内容分发网络 必须有钱
把项目放在阿里云上,买一小块空间
3.Gzip Components Gzip压缩
减少了http请求的大小
自动化工具,边写代码边压缩
4.Put stylesheets at the top 把css放顶部
为了更快渲染页面
5.put script at the bottom 把js放底部
js阻塞加载,一条执行完才会执行另一条
自己的代码一般放顶部,别人的代码放底部
6.将css和js外链
7.Minify Javascript and css 减少js和css的体积
8.Avoid Redirect 避免重定向 每做一次重定向就是重新发送了一次请求
9.Remove Duplicate Scripts 删除重复的脚本
10.用get方式请求ajax,因为post要请求两次
11.Reduce the Number of DOM Elements 减少DOM元素数量 减少DOM操作,能用变量就用变量
12.No 404s 不要出现404页面
13.Reduce Cookie Size 减小cookie cookie特点:每次请求都有cookie
14.优化css,用雪碧图
15.不要在HTML中缩放图片 js重绘重排 css3只重绘
尽量使用css3的运动,减少重排
16.for-in 能用普通循环就用不for in循环(循环json和数组)
17.功能越强大消耗的性能就越高,所以能用Math.floor就不用parseInt,parseInt能字符串转数字,也取整
执行的性能:
1.少用定时器 打开另一个网页的时候 浏览器会改动定时器
2.尽量少操作DOM
3.多用变量(声明变量的时候尽量都写在最前面),预加载
4.尽量能用正则的就不用字符串方法(正则是操作字符串的底层语言)
5.闭包(没用的子函数,释放掉)
性能优化的题:斐波那契数列又称兔子数列,一般解题是
function fn(n){
if(n<=2){
return fn(n-1)+fn(n-2);
}
alert();括号里填想算的数字,这类方法是自己调用自己,递归,本身非常快,但咱们的重复的计算太多了,所以算的数越大时间越长。
所以我们通过吧递归转化为非递归求解的方式,用一个数组存储重复的数据,算出的速度就大大提高了。
var arr=[];
function fn(n){
if(n<=2){
return 1;
}else{
if(arr[n]){
return arr[n];
}else{
arr[n]=fn(n-1)+fn(n-2);
return arr[n];
}
}
}