浏览器是怎样解析CSS选择器的?介绍几个前端性能优化方案?

前端面经

浏览器是怎样解析CSS选择器的?

  • CSS选择器的解析是从右向左解析的。
  • 若从左向右的匹配,发现不符合规则,需要进行回溯,会损失很多性能。
  • 若从右向左匹配,先找到所有的最右节点,对于每一个节点,向上寻找其父节点直到找到根元素或满足条件的匹配规则,则结束这个分支的遍历。
  • 两种匹配规则的性能差别很大,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面。 而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终用来进行绘图。在建立Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 Render Tree。

介绍几个前端性能优化方案

  • 三个方面来说明前端性能优化
  • 一: webapck优化与开启gzip压缩
    • 1.babel-loader用 include 或 exclude
      来帮我们避免不必要的转译,不转译node_moudules中的js文件 其次在缓存当前转译的js文件,设置
      loader: ‘babel-loader?cacheDirectory=true’
    • 2.文件采用按需加载等等
    • 3.具体的做法非常简单,只需要你在你的 request headers 中加上这么一句: accept-encoding:gzip
    • 4.图片优化,采用svg图片或者字体图标
    • 5.浏览器缓存机制,它又分为强缓存和协商缓存
  • 二:本地存储——从 Cookie 到 Web Storage、
    • IndexedDB, 说明一下SessionStorage和localStorage还有cookie的区别和优缺点。
  • 三:代码优化
    • 1.事件代理
    • 2.事件的节流和防抖
    • 3.页面的回流和重绘
    • 4.EventLoop事件循环机制
    • 5.代码优化等等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值