页面初始化接口是A
页面的内容都依赖这个接口,还有一些非关键接口B、C、D、E
从性能优化的角度看是在页面初始化的时候同时调用A B C D E
,还是初始化的时候只调用A
等A
有响应后再调用B C D E
,为什么?
页面初始化接口是A
页面的内容都依赖这个接口,还有一些非关键接口B、C、D、E
从性能优化的角度看是在页面初始化的时候同时调用A B C D E
,还是初始化的时候只调用A
等A
有响应后再调用B C D E
,为什么?
性能优化时,是否将非关键接口放在关键接口后调用,取决于多个因素,包括接口之间的依赖关系、响应时间、以及它们对用户体验的影响。
B、C、D、E
依赖于关键接口A
的结果,那么它们自然需要在A
有响应后才能调用。这种情况下,将它们放在A
之后调用是必要的。A
的响应时间很长,那么从性能优化的角度看,同时调用所有接口(包括A
和B、C、D、E
)可能更为合理。这可以减少总的等待时间,因为非关键接口可能在这段时间内已经完成。B、C、D、E
提供的功能对于页面初始化不是必需的,但可以增强用户体验,那么可以考虑在关键接口A
有响应后再调用它们。这样,用户可以先看到页面的主要内容,然后再加载增强功能,这通常被认为是一种更好的用户体验。综上所述,从性能优化的角度看,并没有一个固定的答案来确定是否应该将非关键接口放在关键接口后调用。这需要根据具体的应用场景、接口之间的依赖关系、响应时间、用户体验和资源消耗等多个因素来综合考虑。在某些情况下,同时调用所有接口可能是合理的;而在其他情况下,将非关键接口放在关键接口后调用可能更为合适。
通俗地说,如果你有一个页面,里面有一些关键信息(比如主要内容)是从接口A获取的,还有一些不是特别重要的信息来自接口B、C、D、E。从加快页面加载速度、优化用户体验的角度来看:
如果这些接口之间没有互相依赖的关系,也就是说,不论先加载哪个,都不会影响其他接口的数据使用,那么你可以在页面初始化的时候一口气同时调用A、B、C、D、E这几个接口。这么做是因为多个请求同时在网络上传输,可能会节省整体加载时间。
但是,如果接口A的数据非常重要,是页面能否成功显示的基础,而B、C、D、E这些接口的数据不是特别紧急,那最好是先只调用接口A,等A返回数据、页面内容加载出来后,再逐个或分批调用其他的非关键接口。这样做是为了保证用户能看到页面的基本框架和主要内容,而不是干等着所有信息都加载完毕。
总结一下,关键是要根据接口的重要程度和相互之间的依赖关系,合理安排调用顺序,尽量让用户尽快看到可用页面,同时兼顾加载效率和服务器压力。
最后,推荐我的视频 从浏览器渲染机制理解 Web 性能——“在浏览器地址栏输入 URL,按下回车后会发生什么?”,了解页面优化的一般原则。
8 回答6k 阅读✓ 已解决
9 回答9.4k 阅读
6 回答5k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
5 回答8k 阅读✓ 已解决
3 回答10.5k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
那如果A接口出错了,这些非关键接口的返回内容有没有必要展示,没必要那就可以将A接口的响应作为前置依赖,减少不必要的接口请求,如果A接口出错仍然希望其他接口的响应内容也展示那就并发请求,你应该从用户体验角度考虑这个问题,这跟性能没啥关系