请求部分:
-
合并CSS、JS文件,减少HTTP请求;
-
压缩CSS、JS文件,缩短文件传输时间;
-
避免404错误:特别要避免给404指定一个停摆页面,否则所有404错误都将会加载一次页面;
-
一般要求减少DNS查询次数,如同一个页面的请求资源尽量少的使用不同的主机名,这可以减少网站并行下载的数量,但很多网站为了加速下载资源其实是特意用了多个主机名,这里要做一个权衡;
-
使用CDN加速,使用户从离自己最近的服务器下载文件;
-
减少Cookie的大小,使用无cookie的域,客户端请求静态文件的时候,减少 Cookie的反复传输对主域名的影响;
-
为文件头指定Expires,使内容具有缓存性;
-
使用gzip压缩内容;
HTML:
-
语义化HTML:使代码简洁清晰,利于搜索引擎,便于团队开发维护;
-
减少DOM节点:加速页面渲染;
-
给图片加上正确的宽高值:这可以减少页面重绘,同时防止图片缩放;
-
防止src属性和link的href属性为空:当值为空时,浏览器很可能会把当前页面当成其属性值加载;
-
正确的闭合标签:如避免使用<div/>,浏览器会多一个将它解析成<div></div>的过程;
-
链接为目录或首页的地址后面加”/”,如http://www.baidu.com/;
-
用LINK而不用@import方式导入样式;
-
样式放在页头,JS放在页尾;
-
缩小favicon.ico并缓存;
CSS:
-
避免使用 CSS Expressions(CSS表达式) ;
-
避免使用 CSS Filter(滤镜);
-
使用CSS缩写,减少代码量;
-
使用CSSSprites(雪碧图),减少图片请求;
-
减少查询层级:如.ul .a要好过.ul .li .a;
-
减少查询范围:如.ul>li要好过.ul li;
-
避免TAG标签与CLASS或ID并存:如a.submit、button#cancel;
-
避免重复的CSS;
Js:
-
减少全局变量的出现;
-
使用事件代理绑定事件,如将事件绑定在祖元素上进行代理;
-
避免进行频繁操作DOM节点;
-
不使用eval;
-
减少对象查找,这种查找方式非常耗性能,尽可能把它定义在变量里;
-
避免重复的JS;