iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
Modern Web

Rive 的一些進階主題系列 第 17 篇

[Day 17] 實務建議 4:preload

  • 分享至 

  • xImage
  •  

昨天先整理好 Rive 檔本身,今天就可以來處理載入時機的問題。

沒必要一開始就載入 Rive

當然在這之前還是要提一下,Rive 通常是有「互動」的「動畫」(不然好像也沒必要用 Rive),所以通常來說,他的載入順序沒必要是最優先的,基於人體先天的限制,載那麼快使用者也沒辦法反應過來。

甚至如果 Rive 不是「首屏」且「第一眼」會看到的部分的話,例如導覽列的按鈕、icon、CTA 按鈕的互動動畫,首屏以外的其他部分等等,那強烈建議把 Rive 檔的載入順序往後拉,且強烈建議針對不同的裝置與網速動態調整載入順序,例如在大螢幕或桌機上,某些 Rive 可以盡快載入,但是在手機上因為是小螢幕,而且手機效能沒有桌機好,那就不一定有必要這樣做。

另外有一些資源,例如音樂音效,因為瀏覽器對於聲音不會自動播放的關係,他的載入時間點又可以再往後拉一點。

提早載入必要的檔案

講這麼久終於要講到 preload 了,如果不是首屏且第一眼的部分,例如 / 以外的 router,那可以去猜使用者下一步會到哪個部分,提前去載那個部分的 Rive。例如在 /,我猜使用者下一步會到 /products,那就提早去載那裡的 Rive。

至於怎麼猜使用者下一步會到哪邊,有兩個角度,一個是抓使用者的事件,mouseenter, focus 之類的,這應該相對簡單,但是時間不一定夠用。另一個角度是,如果有串 GA 之類的東西的話,應該抓得到路徑探索分析圖之類的東西,可以用這個去猜使用者的下一步,或是簡單一點,把幾個常用的頁面都 preload 起來也可以。

另外有需要的話,可以用 requestIdleCallback 把 preload 的程式碼再包一層,或是乾脆寫一個遞迴沒事就 preload 一下。當然這部分沒規劃好的話,會有流量的問題,要再斟酌一下。

講這麼多誰看得完

以上都是一些比較理論而且比較 case by case 的東西,而且因為時間與篇幅的關係,我寫的比較模糊一點。總之我目前的產品是一個類似這樣的電商網站,再給我規劃一次的話,我大概會這樣做,給大家參考一下:

  1. 減容量,重點放在序列圖跟在 Rive 裡面做圖
  2. 把素材全部拆開且做好 CDN
  3. 在 onMounted 用 requestIdleCallback 去 preload 前三張卡裡面的 Rive 素材
  4. 剩下的卡片用 mouseenter 去監聽
    https://ithelp.ithome.com.tw/upload/images/20261001/20184163PhO5CRmbvZ.png

當然現在有 AI,直接問你的 Claude 或 Codex(應該沒人在用 Gemini 吧),請他幫你規劃一整套策略會更準,當然要盡量描述你的需求,把這篇文章直接餵給他也可以,如果方便的話,附上路徑探索分析圖會更準。


上一篇
[Day 16] 實務建議 3:切分 Rive 檔案
下一篇
[Day 18] 文章導讀:Rive is what Flash should've become.
系列文
Rive 的一些進階主題 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言