Shopify 速度優化:修結構性瓶頸而非分數(DebugBear)

核心論點:Lighthouse 分數、Core Web Vitals 這些表層指標解釋不了為什麼很多 Shopify 店家「感覺很慢」。真正的效能來自修結構性瓶頸:過重的 hero 區塊、失控的 app 腳本、沒效率的資產載入、糟糕的執行策略。內容雖以 Shopify 為例,但技巧多為通用前端效能。

快速重點(依主題)

Hero / above-the-fold(最影響 LCP)

  • Hero 圖從 300–400KB(甚至 900KB+)壓到 < 180KB 但維持銳利度。
  • 影片 hero:先放輕量 poster 圖,主內容渲染完再載影片(案例 LCP 從 9s+ → 2.7s)。
  • 避免重量級輪播庫(Swiper.js / Splide.js 各 30–40KB,會 render-block + layout shift),改用輕量 CSS/JS 自刻。
  • 第一張輪播圖 fetchpriority="high",其餘 fetchpriority="low"

圖片尺寸與壓縮

  • 用 Shopify 的 image_url Liquid filter 產生多尺寸變體,讓瀏覽器依裝置選寬度(含 DPR 考量)。
  • 適當壓縮可減 40–70%(500KB → 150KB),但要平衡模糊/色帶(精品/時尚尤其)。

JavaScript / App 管理

  • 條件式載入:腳本只在需要的頁面載(加購腳本只在商品頁)。
  • 非關鍵 JS 用 defer 或放 </body> 前,讓 HTML 繼續解析。
  • 清掉重複庫(重複 jQuery / Alpine.js / 兩套輪播庫)。
  • 選高評價 app、移除沒用/廢棄 app;必要時自刻(自刻購物車 + 免運 bar 6KB vs. app 版 540KB)。

CSS 架構

  • 依頁面分檔:全域放 base.css、頁面專屬放對應檔(商品頁 product.css),降低每頁 render-blocking CSS。
  • {% javascript %} / {% stylesheet %} Liquid 標籤避免 section/block 重複時 CSS/JS 被重複渲染。

字型

  • Font subsetting:移除用不到的字集(英文站移除 Cyrillic/Arabic/中文),可減 40–50%(工具 Font Squirrel)。

網路優先序

  • Preload 主要自訂字型降低 FCP 延遲;font-display: swap 讓 fallback 先顯示。
  • fetchpriority="high" 給 hero 圖與首屏前 1–4 張商品圖;below-fold 用 low
  • 絕不 lazy load above-fold 圖(會惡化 LCP);below-fold 用預設 lazy 或 Intersection Observer(可調 rootMargin)。

值得我另外深入研究的點

相關