關於大量載入資料的最佳化

Sep 11, 2022

一般在載入相同規格的資料,如果資料內容不多(20筆?),我們會選擇一次載入,同時在畫面上一次顯示,但如果資料多了,像是100筆,裡面有文字又有圖片,會讓使用者的等候過久、流量過大,造成使用者體驗不佳。

一般會在三個層面去做最佳化,各自在前端、後端、UI,去改善整體的UX 分成三個部分解釋定義

Pagination(後端)

一般說是分頁,通常這塊比較常用的做法是在後端,取得一筆資料的時候,像是電商產品,會透過前端跟後端溝通,告訴後端這次資料每頁多少筆資量(per page),同時告知我要前往的頁面(current page)。 所以每次取得的資料會是當頁需要顯示的資料數量。

Lazy loading(前端)

一般稱為緩載入,可以參考 ,之前會使用javascript和css來實現。 瀏覽器對於圖片 html tag <img>,只要一出現就會開始下載後顯示,如果還沒有要看見的資料就先載入,就會造成頁面延後完成,以及每次請求(request)到整個頁面渲染(render)結束時間過長,所以到有需要看到,再去載入是一個聰明的方法,像是完全靜態的網頁,完全不用呼叫API,有大量的圖片也可以使用,目前chrome已經有原生支援

Infinite Scroll(UI)

透過以上兩種技術和最佳化,已經可以在實際上解決一次載入造成的延緩與效能問題,但是突然的載入資料,讓頁面長出來,在UX上會有點唐突,加上希望使用者可以用滑動的方式可以不間斷的連續瀏覽,就會使用Infinite Scroll(瀑布流)的方式設計,讓scrol bar到瀏覽器底部,甚至在20%的時候就會載入下一個分頁,參考

稍微懂一點技術的PM或許會通稱以上三個為lazy loading,已經很不錯,但身為專業人士把觀念了解的更清晰會更有助於溝通。

Ekman Hsieh

文字工作者,寫作時間常常在人類與電腦之間拉鋸,相信閱讀,相信文字與思想所構築的美麗境界