vianvio / FE-Companions

山虽高,我心已决要攀登, 路再难,绊不住我的脚跟; 因为我看到生命之路就在这里。 -- 《天路历程》
447 stars 34 forks source link

20200226 - *(๑小年[太阳] #21

Open vianvio opened 4 years ago

vianvio commented 4 years ago

针对“通过使用阿里CDN、减少DOM操作、异步加载,使得官网加载时间提升60%,用户体验更优” 有以下问题列表:

  1. CDN为什么可以帮助加速?CDN的回源是什么?
  2. 减少DOM操作是指什么?
  3. 异步加载工程上怎么做的?
  4. 哪些代码适合异步加载?考虑单一工程与多工程的场景,具体展开方案。
  5. 异步加载失败了,怎么兜底?如何感知?
liuchaoxue commented 4 years ago

1.cdn 也叫内容分发网络,cdn就是通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,使得提高用户访问响应速度和命中率。 回源:指的是当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。如果没有人访问,那么CDN节点不会主动去源站拿的。

liuchaoxue commented 4 years ago

2.事件委托,减少监听处理 减少重排 先隐藏元素,进行操作,然后再显示

liuchaoxue commented 4 years ago
  1. 通过使用动态创建script的方法,通过onload方法插入dom中
liuchaoxue commented 4 years ago

4.我想请教一下,各位有什么看法 js/ajax、还有外部引入的文件、css、音视频 都适合异步加载,根据需求不同,选用不同的加载方式,异步加载或者延时加载。

liuchaoxue commented 4 years ago

5.对于异步加载文件,或者异步请求,可以使用监听加载方式获取状态,然后进行处理,比如promise 通过.catch 监听失败,在回调中去添加 处理失败后的方法

vianvio commented 4 years ago
  1. 通过使用动态创建script的方法,通过onload方法插入dom中

需要给出具体工程上的解法,比如如何在业务代码无感知的情况下达到这个效果,需要描述细节或原理。

4.我想请教一下,各位有什么看法 js/ajax、还有外部引入的文件、css、音视频 都适合异步加载,根据需求不同,选用不同的加载方式,异步加载或者延时加载。

这题的目的是结合场景分析哪些需要异步,请重新思考一下题目后半段的单一工程与多工程场景。

5.对于异步加载文件,或者异步请求,可以使用监听加载方式获取状态,然后进行处理,比如promise 通过.catch 监听失败,在回调中去添加 处理失败后的方法

这里需要给出具体兜底和感知的方法。所谓兜底是如何在交互上兜底,让用户觉得自然。所谓感知是指线上出现了异步加载失败的问题,开发和测试如何能够知道失败的比例,哪些失败了。需要给出具体方案。