[性能优化]面试常考篇

节流

节流顾名思义则是将减少一段时间内触发的频率。节流会稀释你的执行频率,比如每间隔1秒钟,只会执行一次函数,无论这1秒钟内触发了多少次事件

image.png

使用场景:
可以将一些事件降低触发频率。比如懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费资源;另外还有做商品预览图的放大镜效果时,不必每次鼠标移动都计算位置。




  
  
  
  节流



  

  



防抖

image.png

防抖就是一段时间内触发很多事件,但是只取最后一次的事件,再延迟规定时间后执行事件。

我们可以了解到,在触发点击事件后,如果用户再次点击了,我们会清空之前的定时器,重新生成一个定时器。意思就是:这件事儿需要等待,如果你反复催促,我就重新计时!等到你不催了,我再取最后一次触发的事件的时间,过一段时间后就执行。

用户点击 >> 定时器:1秒我会去执行 >> 用户在1秒内点了多次 >> 把旧定时器清空,生成新定时器

使用场景:
有个输入框,输入之后会调用接口,获取联想词。但是,因为频繁调用接口不太好,所以我们在代码中使用防抖功能,只有在用户输入完毕的一段时间后,才会调用接口,出现联想词。




  
  
  
  防抖


  

  


懒加载

  • 什么是懒加载
    懒加载也叫延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式。用户滚动到它们之前,可视区域外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。常适用图片很多,页面很长的电商网站场景中。
  • 为什么用懒加载
    • 能提升用户的体验,不妨设想下,用户打开像手机淘宝长页面的时候,如果页面上所有的图片都需要加载,由于图片数目较大,等待时间很长,用户难免会心生抱怨,这就严重影响用户体验。
    • 减少无效资源的加载,这样能明显减少了服务器的压力和流量,也能够减小浏览器的负担。
  • 原理
    首先将页面上的图片的 src 属性设为空字符串,而图片的真实路径则设置在data-original属性中,
    当页面滚动的时候需要去监听scroll事件,在scroll事件的回调中,判断我们的懒加载的图片是否进入可视区域,如果图片在可视区内将图片的 src 属性设置为data-original 的值,这样就可以实现延迟加载。


    
    Lazyload
    

















预加载

  • 什么是预加载
    资源预加载是另一个性能优化技术,我们可以使用该技术来预先告知浏览器某些资源可能在将来会被使用到。预加载简单来说就是将所有所需的资源提前请求加载到本地,这样后面在需要用到时就直接从缓存取资源

  • 为什么要用预加载
    在网页全部加载之前,对一些主要内容进行加载,以提供给用户更好的体验,减少等待的时间。否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,直到所有内容加载完毕。

雪碧图

多个图片集成在一个图片中的图。
使用雪碧图可以减少网络请求的次数,加快允许的速度。
通过background-position,去定位图片在屏幕的哪个位置

你可能感兴趣的:([性能优化]面试常考篇)