前端性能优化浏览器+服务器篇
1、性能优化之浏览器篇
一、把CSS放在head中加载
- 能让页面更早的开始渲染,避免闪屏
- 最好能包含关键渲染路径的样式:首屏
- 会让页面显得加载速度更快,由于这样作可使浏览器逐步加载已经下载的网页内容,这对内容比多的网页尤为重要,用户不用一直等待在一个白屏上,而是能够先看到已经下载的内容。
- 若是样式表放在底部,浏览器会拒绝渲染已经下载的网页,由于大多数浏览器在实现时都努力避免重绘,样式表中的内容是绘制网页的关键信息,没有下载下来以前只好对不起观众了。
二、把JS放在body未尾
三、不使用CSS表达式
四、用外链方式引用CSS和JS
五、压缩JS和CSS
- 生产环境删除没必要要的注释、空白
- JS中变量名压缩,混淆压缩
六、不重复加载JS
- 在IE中仍是会多个请求,不能发挥缓存优点
- 意味着更长的JS执行时间
七、让Ajax请求可缓存
八、用GET方式发起Ajax请求
- GET方式能够缓存
- 若是是获取信息,GET更语义化
- 若是是提交数据,POST更语义化
九、组件延迟加载
- 保障关键页面资源优先加载:由于并发数限制
- 延迟加载的典型手段:Lazyload(对于图片比较多的页面)
十、减小DOM节点数
- 天猫:更多节点数觉得浏览器布局、渲染时计算量更大
- 会加大页面加载和脚本执行的效率
十一、避免使用iframe
十二、减小COOKIE体积
1三、使用无COOKIE域名加载静态资源
- 减小静态资源加载时的网络传输量
- 静态资源加载一般是不须要COOKIE的
- 阿里:精简COOKIE后,每一年节省的流量TB记
1四、减小JS中的DOM访问
- 对于查找到的元素,缓存在变量中
- 节点增长是合理利用DocumentFragment
- 不要用JS去频繁修改样式
1五、使用更智能的事件监听机制
- 基于事件冒泡的委托机制,有效减小绑定的数量
- $("selector").delegate("li","click",function(){});
1六、使用常见的图片优化手段
- 相比代码,图片体积很大
- 常见的压缩工具:PNGCrush、JPEGTRAN、PNGQUANT
- 渐进式编码:JPG
1七、不要在HTML中缩放图片
- 徒增渲染开销,提供适当尺寸便可(用到多大的就用多大的,好比使用100*100的不要设置为500*500)
1八、不要把图片src置空
- IE、Chrome、FireFox会发起额外的主文档请求
- 空的图片src仍然会使浏览器发送请求到服务器,这样彻底是浪费时间,并且浪费服务器的资源。尤为是你的网站媒体被不少人访问的时候,这种空请求形成的伤害不容忽略。
1九、任何资源尽可能在25K之内
2、性能优化之服务器篇
一、减小网络请求
- 合并请求:包括JS、CSS(将多个CSS合并在一块儿)
- 使用雪碧图:CSS Sprite
- 使用地图:HTML Map
- 内联小图片:Base64Encode
二、使用内容分发网络CDN
三、适当的使用缓存
- 为静态资源添加Expires响应头
- 为静态资源添加Cache-Control资源
- 配置Apache、Nginx、Express
四、启用GZIP压缩
- 大幅度减小网络传输体积,压缩率高达:60%~90%
- 多种文件类型:HTML、JS、CSS、Image
五、减小DNS查找
- 单个站点不要使用太多域名
- 单次DNS查找约消耗20~120ms
六、避免重定向3XX(30一、302)
- 重定向对浏览器意味着重头再来
- 每次重定向至少多花费50ms
七、配置有效的ETAG

八、让Ajax请求可缓存
九、尽快输出第一个字节
- 尽快输出页面头部,浏览器能尽快干活
- 并行下载外链的CSS
- 风靡一时的BigPipe也是基于此
十、使用无COOKIE域名加载静态资源
- 减小静态资源加载时的网络传输量
- 静态资源加载一般是不须要COOKIE的
- 阿里:精简COOKIE后,每一年节省的费用百万级
欢迎关注本站公众号,获取更多信息