我网站的一位用户注意到无限滚动功能的加载时间严重延迟,该无限滚动功能向我的API发出了GET请求。在测试时,它似乎只发生在Chrome和Opera中,其他浏览器则提供了近乎无缝的体验。
因此,在进行了一些测试之后,我决定进行一些时间记录(对不起,由于声誉太低,我无法在此处发布内嵌图像):
这些日志来自相同的调用,您可以看到chrome大约需要3000毫秒,而firefox大约需要90毫秒。 IE / Edge与Firefox具有相同的性能。
为了进一步说明这个问题,“网络”标签似乎正确报告了毫秒(某些情况下大约100毫秒,但是没有3000毫秒):
现在我要调用的实际代码是
loadMore() {
console.time('start load');
//some extra stuff here
console.timeEnd('start load');
console.time('state api call');
this.$APIService.getCards(this.deckId, this.page, this.searchInput, this.lastId)
.then(res => {
console.timeEnd('actual call');
console.timeEnd('state api call');
//some more stuff here
})
}
“ this。$ APIService.getCards”调用只是我的apihandler:
getCards (deckId, page, searchInput,lastId) {
console.time('actual call');
return Api().get('cards?deckId=' + deckId + '&lastId='+lastId + '&search='+ searchInput)
},
其中“ Api()”是我的axios对象:
axios.create({
withCredentials: true,
baseURL: baseURL
})
要注意的另一件事是,我的服务器仅在延迟后才收到请求,因此这与网络标签相对应,表明它仅花费大约100毫秒。
那么,有谁知道为什么会这样吗?如您所见,我实际上是在请求之前开始记录时间,并在收到结果后立即结束记录。为什么只在Chrome中执行通话会有延迟?
谢谢!