這篇文章主要介紹Ajax的content-download時間過慢怎么辦,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
事件背景:
開發(fā)人員反饋給我一個bug,ajax相應速度很慢,經過定位,速度慢的原因在于,content-download時間過長,在chrome中有2s+的延遲,后證實在我們的手機客戶端里也有這一延遲。截圖如下:
過程分析:
1.定位原因:
首先,看到這一延遲,第一反應這不是前端bug,并反饋給后端同學。but,通過后端定位發(fā)現(xiàn)接口反饋時間非常迅速,翻閱國外文獻事實證明,這是由于瀏覽器事件不標準引起的bug。
2.bug分析:
通過對開發(fā)同學的溝通,我發(fā)現(xiàn)bug有兩個特點,第一,這一延遲只存在需要上拉加載而引起ajax請求的情況下,且統(tǒng)一環(huán)境和瀏覽器下延遲時間相似,都在2-3s之間。
第二,部分上拉加載的組件雖然也觸發(fā)ajax,但并未有延遲。
于是開始了前端,原因的定位,首先找想通點:由于我們的項目架構設計,全部的上拉加載都是由一個基礎組件pagger 完成的,其部分代碼如圖所示,原理是通過瀏覽器的scroll事件和resize事件不停的去檢測組件是否在可視區(qū)域中,如果是則觸發(fā)hasMore函數(shù)。
其次,查看出現(xiàn)延遲問題的業(yè)務頁面和不出現(xiàn)延遲的業(yè)務頁面對這一組件的調用區(qū)別。
通過對比,也沒有發(fā)現(xiàn)兩個組件有何不同。(故這一奧秘,有興趣的同學可以聯(lián)系我一起討論。。。。。我可以把源碼發(fā)給你)
經過多次的重現(xiàn)問題,明顯看到在pc的chrome,使用touch模式延遲偶爾消失,而使用mousewheel延遲又出現(xiàn)。故將問題定位到mousewheel事件 和其相近對應的 scroll事件中。
bug解決:
結合上訴原因并通過查看的幾個帖子討論,得出如下結論:
1.chrome瀏覽器的mousewheel事件是引起這一延遲的原因(mousewheel事件不是標準事件,不推薦大家使用),當然!代碼中我并沒有使用mousewheel事件,但是使用scroll事件就可能會引起mousewheel事件的沖突,而在我們特質的手機客戶端中的webview不幸的也命中了這一缺陷。
2.想要解決這個問題,可以嘗試監(jiān)聽這一事件(如果瀏覽器沒有這一事件,也不會響應這一監(jiān)聽,沒有沖突),并在事件觸發(fā)的時候,取消其所有默認行為:
故通過監(jiān)聽其事件模型的 deltaY(鼠標垂直滾動量)當其有垂直位移的時候,觸發(fā)preventDefault,故代碼如下:
window.addEventListener("mousewheel", (e) => { if (e.deltaY === 1) { e.preventDefault(); } })
將這段代碼加入前端基礎庫的頁面初始化代碼中,神奇的發(fā)現(xiàn)相關的頁面content-download延遲問題都得到了解決。
ajax是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術,可以通過在后臺與服務器進行少量數(shù)據(jù)交換,使網(wǎng)頁實現(xiàn)異步更新。
以上是“Ajax的content-download時間過慢怎么辦”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁名稱:Ajax的content-download時間過慢怎么辦-創(chuàng)新互聯(lián)
URL地址:http://sd-ha.com/article16/dghsdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信小程序、定制開發(fā)、移動網(wǎng)站建設、網(wǎng)站策劃、手機網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)