前些天,忽然接到用戶的大量反饋,咱們的小程序頻繁出現閃退,崩潰的現象。如圖, css
因而立刻着手追查問題,首先肯定了致使閃退的頁面。是在一個有長列表的頁面,當上拉加載更多,翻頁翻多幾頁的時候就致使閃退了。通過重重排查(時間問題,這裏就不詳細描述排查的方法了,大多數用的都是縮小範圍排除法啦),最後終於肯定了問題所在,原來是在列表中,同事最近新加上的css3動畫所致,這裏的列表是循環渲染的一個組件,組件中的一個彈窗的彈出和收起,使用動畫,可是這裏沒有加上wx:if,致使了循環渲染該動畫,因此翻頁翻着翻着就掛掉了。 肯定了問題,就很好辦了,加上條件判斷,只有須要的時候,才渲染彈出彈窗。真機調試,暴力狂刷數據,發現閃退的現象再也不出現了,閃退問題解決,然而高興不到三分鐘,又出問題了,發現翻頁到十幾頁的時候,再也刷不動後面的數據了,明明是還有更多數據的。再在開發工具上看查看數據,結果控制檯報了這麼一個錯 在真機上爲:這是什麼問題呢,查看官方文檔,發現是有這樣的限制的前端
回顧咱們的代碼,這裏的分頁加載數據,上拉加載,數據是放在一個for循環裏去加載,數據源是一個數組對象。在加載下一頁數據時,將下一頁的數據拼到當前數組後面。這裏是常規的作法。能夠看看代碼:這裏能夠看到,每次獲取新的一頁,都要從新setData新的數組,仔細想一想,當這個數組到後面愈來愈大的時候,很容易就超出了單次設置數據超過1024kb的限制了。那麼怎麼解決這個問題呢,這裏官方文檔裏面其實有提到一個注意點,css3
既然這裏是支持改變數組的某一項,那麼分頁的問題,能夠改變爲一個二維數組,仍是直接看代碼吧。小程序
這裏的方法則暫時擺脫了單次設置數據多大的問題。固然,要是單頁的數據過多,仍是會出現問題的。最合適的仍是對數據結構進行精簡,前端沒必要要的數據,能夠不傳過來前端。數組
寫在最後,此次第一次寫相似的分享,描述仍是有些不清晰,之後能夠多嘗試這樣的總結吧。css3動畫