总结下我所知道的前端性能优化方案。css
样式文件的引用(<link />)放在html文档的head标签中,脚本文件的引用(<script />)放在body的底部;
另外尽可能减小在页面中出现片断性(内联)的style和script代码。html
压缩、合并CSS,JS文件前端
对图片文件进行精简优化,方式如:web
OptiPNG工具无损优化PNG图片;浏览器
使用webp格式;缓存
合并css、js文件;性能优化
使用css sprites技术;服务器
icon图片过多的状况下,考虑使用iconfont技术;架构
使用reauire.js或sea.js按需加载js模块;app
使用lazyload.js插件延迟加载图片;
重复脚本的问题通常出如今规范稀松的团队或者多部门协做开发的团队中,尽可能减小这类问题的出现;重复脚本通常在开发时便可发现,由于大多数状况下这会致使变量覆盖(如屡次引用jQuery),功能没法正常使用。
最快的Ajax请求就是没有请求。
如下状况都会发生:
添加或删除可见的DOM元素;
元素位置改变;
元素尺寸改变(包括:外边距,内边距,边框厚度、宽度、高度等);
内容改变;
页面渲染器初始化;
浏览器窗口尺寸变化。
重排和重绘不可避免,只能尽可能少的发生。
网上目前也有不少公开免费的CDN资源可使用(举例国内的,国外的请自行百度~),如:
Gzip一般能够减小70%网页内容的大小,包括脚本、样式表、图片等文件。Gzip比deflate更高效,主流服务器都有相应的压缩支持模块。
BigPipe是一个从新设计的基础动态网页服务体系。大致思路是,分解网页成叫作Pagelets的小块,而后经过Web服务器和浏览器创建管道并管理他们在不一样阶段的运行。