Web前端性能优化 - 让你的页面飞起来-原创手记-天下标王
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Web前端性能优化 - 让你的页面飞起来

侠客岛的含笑
关注TA
已关注
手记 133
粉丝 1.6万
获赞 1807

资源合并与压缩

  • 减少http请求数量
  • 减少请求资源大小

浏览器一个请求从发送到返回都经历了什么?

图片描述
图片描述

html压缩

图片描述

css压缩 js压缩(混乱)

图片描述

文件合并

图片描述

图片优化

图片描述

图片压缩

图片描述

Image inline

针对小图片我们可以使用Image inline的方法
将图片的内容内嵌到html当中
减少你的网站的HTTP请求数量

css和js的装载与执行

图片描述

  • 词法分析
  • 并发加载
  • 并发上限
  • css head中阻塞页面的渲染
  • css阻塞js的执行
  • css不阻塞外部脚本的加载(预资源加载器,但是会阻塞执行的过程)
  • 直接引入的js阻塞页面的渲染
  • js不阻塞资源的加载(预加载)
  • js顺序执行,阻塞后续js逻辑的执行

懒加载

图片描述

预加载

图片描述

  1. 隐藏image加载
  2. 使用Image对象加载
  3. XMLHttpRequest (存在跨域问题,不过可以更加精准的控制预加载的过程)
  4. PreloadJS

重绘与回流

频繁触发重绘与回流,会导致UI频繁渲染,最终导致js变慢
回流必将引起重绘
而重绘不一定会引起回流


当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)
当页面布局和几何属性改变时就需要回流


当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。

触发页面重布局的属性

  • 盒子模型相关属性会触发重布局
  • 定位属性及浮动也会触发重布局
  • 改变节点内部文字结构也会触发重布局

图片描述

只触发重绘的属性

图片描述

新建DOM的过程

  1. 获取DOM后分割为多个图层
  2. 对每个图层的节点计算样式结果(Recalculate style--样式重计算)
  3. 为每个节点生成图形和位置(Layout--回流和重布局)
  4. 将每个节点绘制填充到图层位图中(Paint Setup和Paint--重绘)
  5. 图层作为纹理上传至GPU
  6. 符合多个图层到页面上生成最终屏幕图像(Composite Layers--图层重组)

Chrome创建图层的条件

  • 3D或透视变换(perspective transform)CSS属性,比如transform:translateZ(0);
  • 使用加速视频解码的<video>节点
  • 拥有3D(WebGL)上下文或加速的2D上下文的<canvas>节点
  • 混合插件(如Flash)
  • 对自己的opacity做CSS动画或使用一个动画webkit变换的元素
  • 拥有加速CSS过滤器的元素
  • 元素有一个包含复合层的后代节点(一个元素拥有一个子元素,该子元素在自己的层里)
  • 元素有一个z-index较低且包含一个复合层的兄弟元素(换句话说就是该元素在复合层上面渲染)
  • <video>,<canvas>,will change:transform,overflow-scrolling:touch

    调试方法

  • 通过chrome控制台的layers查看页面图层
  • 通过chrome控制台的Rendering来实时查看重绘的元素
  • Performance很有用

优化技巧

  1. 用translate替代top/left改变,原因:http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/
  2. 用opacity替代visibility(会触发重绘)
    • opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的
      • visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
      • display=none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样
  3. 不要一条一条地修改 DOM 的样式(尽管有缓存机制),预先定义好 class,然后修改 DOM 的 className
  4. 把 DOM 离线后修改,比如:先把 DOM 给 display:none (有一次 Reflow),然后你修改100次(不会重发任何Reflow),然后再把它显示出来
  5. 不要把 DOM 结点的属性值(ex. offsetHeight,offsetWidth,当我们获取这种属性一定会触发回流的过程,因为他要去获取最新的某个DOM元素的位置,强制刷新回流队列缓存)放在一个循环里当成循环里的变量,在循环外面声明一个变量来中转
  6. 不要使用 table 布局,可能很小的一个小改动会造成整个 table 的重新布局
  7. 动画实现的速度的选择(css的性能会影响js变慢,UI线程和JS线程是相互阻塞的),选择合适的动画的间隔时间
  8. 对于动画新建图层(当我们使用自定义的DOM做动画时,这时chrome不会自动创建图层)
  9. 启用 GPU 硬件加速,比如加上transform:translateZ(0); transform:translate3d(0,0,0);可以看下这个https://www.cnblogs.com/PeunZhang/p/3510083.html 问题就是防止过多的图层,因为图层合并也会消耗性能

图片描述

一般来说,我们要在是否创建图层之间权衡是否创建,因为合并图层也是有成本(比较消耗性能)的,依据是否有所优化而定

图片描述

浏览器存储

Cookie

图片描述

如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索
问题:cookie中在相关域名下都会携带,cdn的流量损耗
解决方法: cdn的域名和主站域名分开

图片描述

LocalStorage and SessionStorage

图片描述

IndexedDB

图片描述

PWA与Service Worker

图片描述
图片描述

缓存

  • httpheader
  • max-age 最大缓存时间,优先级高
  • s-maxage public缓存时间,比如CDN,304。优先级比s-maxage高

图片描述

Expires

图片描述

Last-Modified/If-Modified-Since

图片描述

Etag/If-None-Match

图片描述
图片描述
图片描述

优化策略

  • 构建层模板编译
  • 数据无关的prerender方式(公共数据),直接生成相关的html页面
  • 服务端渲染
打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP

热门评论

作者6666666666666

查看全部评论

相关内容推荐

全网站优化有哪些优化网站权重如何提升网站关键词优化首选火28星深圳整体网站优化步骤如何优化网站就选火1星网站推广优化挥性宀云速捷宜兴seo网站优化企业厚街电子网站优化怎么推阿坝网站优化哪家好东丽网站优化seo网站代码精简优化昌江黎族自治县网站优化公司网站优化改动怎么做佛山网站推广优化漳州网站优化哪家好新网站优化流程seo长尾词怎么优化网站推广如何优化网站饲椅云速捷榜首如何更改网站优化苏宁易购网站优化检测光明网站搜索引擎优化公司萧山区网站优化报价手机网站优化哪家便宜深圳自己网站优化的有效方式网站优化最重要的是什么海陵网站优化哪家好企业网站如何优化导航如何做好网站免费优化网站哪些地方需要优化道真网站优化推广公司邯郸seo网站优化的费用网站布局优化推广福田中小型网站优化经验沙头角怎么样进行网站优化小网站优化排名吉安网站综合优化网站怎么优化认可f火28星嘉定区seo网站关键词优化百度seo网站优化技巧河南网站seo优化技巧上海网站的优化公司江门网站关键词优化公司便宜的网站优化互联网推广镇江网站优化哪家好关注网站优化宜良网站优化优惠大鹏网站自动优化优化网站方法鼓励云速捷优选最专业的网站优化方案你是如何理解网站优化网站优化锚文本的注意事项嘉定区百度网站优化价格费用网站主词优化是做什么的太原网站优化咨询阜宁网站seo优化方案门头沟外贸网站推广优化龙湾网站优化刷手机网站优化首页软西南网站优化价格巩义市优化网站在哪里学山西左云网站优化大庆网站优化代理马鞍山市网站推广优化哪家便宜市南专业建站网站优化临沂质量好网站优化咨询电话漯河网站建设优化推广公司优化一个彩票网站海门市网站优化哪家好桓台网站整站优化绒布球seo网站排名优化网站建设优化推广致电芝罘上市公司网站优化网站快速优化评论易速达湖南seo网站优化南京网站的优化福田站长网站优化的主要方法深圳如何把网站优化有用吗延庆快速网站优化服务运营优化网站门头沟优化网站方法青海西宁网站优化推广化妆品网站搜索引擎优化网站页面优化图片岚山企业网站优化新安独立网站优化宜宾网站seo优化怎么选网站页面布局对网站优化的影响给网站加入一行代码自动优化清远如何选择免费网站优化道真网站优化推广公司建网站优化 s网站快速优化需火19星服务廉江专业网站优化找谁做网站优化外贸推广网站建设优化谷歌网站网站优化工具超级外链工具源码咸宁网站排名优化哪家好大连推荐销售行业网站优化网站排名以及优化海口seo网站优化源头文山网站优化途径有实力的婚纱摄影网站优化网站内部如何优化网站优化收费多少静安网站推广优化南宁网站优化快速排名网站推广优化张店网站优化效果不好是什么原因张家界长沙网站优化价格多少钱兰州网站优化比较网站优化搜索引擎好处优化一个彩票网站大同网站优化招商新站网站优化和收录的提升方法潼南企业网站优化找哪家辽宁铁岭网站推广与优化移动端网站页面优化乐陵网站关键词优化广州整站优化网站网站优化给您不错的选择苑中园南昌网站优化费用网站自然优化怎么选石湾优化网站公司巩义优化网站排名怎么选昌平网站优化公司东台网站搜索优化方案塘沽网站关键词优化公司郴州荆门网站优化招商教程实力网站优化哪家好静安区网站优化公司廊坊公司网站排名优化河南网站优化费用珠晖区网站seo优化排名江门网站优化关键词推广湖北省网站关键词优化哪家好西昌网站优化多少钱莞城电子网站优化比较好石岩外贸独立网站优化唐山网站优化外包公司周口做网站优化稳定的网站关键词优化普宁网站排名优化软件大兴网站优化价格优化网站关键点佛山哪家网站做优化好增城市企业网站优化临澧县网站seo优化排名杭州网站seo优化方案虹口区谷歌网站优化价格费用酒店手机网站怎么SEO优化西藏网站综合优化大同网站排名优化宝山区百度网站优化费用网站图片优化读取速度网站需要几个人优化网站排名优化询问q火27星基隆网站优化优化网站软件就连火1星惠seo优化网站如何布局青岛网站优化排名推广巩义网站推广优化哪里专业视频网站的优化和建议怎么评价网站优化的效果网站建设网站制作网站优化赤水网站优化中山优化网站方法福保网站优化营销兴庆区网站优化哪家靠谱网站优化和推广有什么用建安网站优化的排名介绍出名的教育行业网站优化网站建设和优化的好处安阳平台seo网站优化系统塔城网站优化诀窍优化网站排名原则东莞seo怎么优化网站张店seo及网站优化台儿庄网站优化公司思南网站优化与推广如何编辑优化网站标题新吴区创新网站优化推广是什么什么网站不能优化seo大兴网站优化价格推荐优化网站竞争优势校园网站优化方案遂川网站优化公司网站开发 有哪些优化功能网站收录和优化柳州网站优化哪家好长沙有效的网站优化钟祥网站怎么优化恩平网站关键字优化福州网站seo优化有哪些网站推广优化开户优化网站排名克制云速捷拥有深圳最好的网站优化最好的方法网站优化标题如何设置宜春网站关键词优化昆明徐州网站建站优化秀山网站推广优化

合作伙伴

天下标王

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统