1、减少HTTP请求次数
2、减少DNS查找次数
- 可利用
DNS
缓存 - 权衡
CDN
和DNS
查询,利用CDN
可减少向服务器发送的cookie
数量,却会增加DNS
查询负荷,小型网站应该减少DNS
查询时间,而像天猫之类的大型网站,因为登录次数较多一般都会有DNS
缓存,因此使用CDN
较好。 - 减少
CDN
即减少网站的查询主机数量,要在并行加载数量和查询的CDN
数量之间权衡,一般资源并行加载数量在6个左右,将一个主机的DNS查询数量减少到1或者2明显不是最优选择。
3、懒加载
如先加载首页的图片资源,再监听onscroll事件,当首屏图片即将离开视线时再加载其他图片。
4、预加载
预加载是在浏览器空闲时请求将来可能会用到的页面内容(如图像、样式表和脚本)。使用这种方法,当用户要访问下一个页面时,页面中的内容大部分已经加载到缓存中了,因此可以大大改善访问速度。
5、按需加载
即模块化开发,只需加载用到的资源。
5、语义化开发
- 合理恰当的使用标签,让页面内容结构化
- 在没有css时也能阅读,搜索引擎的爬虫根据标记确定关键词的权重看,有利于
SEO
- 容易阅读和维护
6、使iframe的数量最小
iframe会阻止页面加载,可在JavaScript中动态插入标签。
没有语意
7、合理使用缓存Expires或Cache-Control
对于静态内容:设置超长的过期时间
对于动态内容:合理使用lastmodified和Etag。
8、把样式表置于顶部
即DOM树加载的同时页面结构也渲染出来了。
9、避免使用CSS表达式(Expression)
表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。
10、用link标签代替@import
@import会阻止页面并行加载且存在兼容性问题。
11、把脚本置于页面底部
使用延迟脚本。Deferred,Async属性
12、减少DOM访问
使用JavaScript访问DOM元素比较慢
- 缓存已经访问过的有关元素
- 避免重绘和回流
- 事件代理
- 函数节流
- 递归缓存
13、减小Cookie体积
coockie是通过HTTP文件头来在web服务器和浏览器之间进行交流的
- 创建一个子域名并用他来存放所有静态内容。
- CDN