Astro 效能優化實用技巧:5個關鍵策略提升網站速度

介紹5個實用的Astro效能優化技巧,從資源預載到建置配置,幫助開發者提升網站載入速度。

Astro 效能優化
Astro 效能優化

Astro本身已經具備優秀的效能表現,但仍有進一步優化空間。以下5個技巧能有效提升網站載入速度與使用者體驗。

1. 關鍵資源預載

讓瀏覽器提前載入重要資源,減少首屏載入時間。

---
// 在Layout中預載關鍵資源
---
<head>
  <link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
  <link rel="preload" href="/styles/critical.css" as="style">
  <link rel="dns-prefetch" href="//fonts.googleapis.com">
</head>

預載策略

  • 首屏字體必須預載
  • 關鍵CSS優先載入
  • 重要圖片使用preload
  • 外部域名DNS預解析

效果

首屏載入時間減少20-30%

使用者感受明顯提升。

2. 圖片優化策略

Astro內建圖片優化功能,搭配適當設定能進一步提升效能。

---
import { Image } from 'astro:assets';
import heroImage from '../assets/hero.jpg';
---

<!-- 響應式圖片 -->
<Image 
  src={heroImage}
  alt="Hero image"
  width={800}
  height={400}
  format="webp"
  quality={80}
  loading="eager"
/>

<!-- 多格式圖片 -->
<Picture
  src={heroImage}
  formats={['avif', 'webp', 'jpg']}
  alt="Background"
/>

優化技巧

  • 首屏圖片使用loading="eager"
  • 其他圖片使用loading="lazy"
  • 採用現代格式(WebP、AVIF)
  • 設定適當的品質值

3. JavaScript島嶼優化

精確控制互動組件的載入時機。

<!-- 進入視口才載入 -->
<InteractiveChart client:visible />

<!-- 使用者閒置時載入 -->
<Modal client:idle />

<!-- 特定斷點才載入 -->
<MobileMenu client:media="(max-width: 768px)" />

<!-- 立即載入 -->
<CriticalComponent client:load />

載入策略選擇

  • client:load - 立即載入
  • client:idle - 頁面閒置時載入
  • client:visible - 進入視口才載入
  • client:media - 符合媒體查詢條件才載入

4. 建置配置優化

astro.config.mjs調校

適當的建置配置能顯著提升網站效能。

export default defineConfig({
  output: 'static',
  build: {
    // 內聯小於4KB的資源
    inlineStylesheets: 'auto',
    // 程式碼分割
    splitting: true,
  },
  vite: {
    build: {
      // CSS壓縮
      cssMinify: 'lightningcss',
      // JavaScript最小化
      minify: 'terser',
      terserOptions: {
        compress: {
          drop_console: true,
          drop_debugger: true,
        }
      }
    }
  }
});

5. View Transitions最佳化

Astro 4.0的View Transitions功能讓頁面切換更流暢。

---
// Layout.astro
import { ViewTransitions } from 'astro:transitions';
---
<head>
  <ViewTransitions />
</head>

<!-- 指定轉場動畫 -->
<div transition:name="hero" transition:animate="slide">
  <h1>頁面標題</h1>
</div>

進階控制

<style>
  @view-transition {
    navigation: auto;
  }
  
  ::view-transition-old(hero),
  ::view-transition-new(hero) {
    animation-duration: 0.3s;
    animation-timing-function: ease-in-out;
  }
</style>

效能檢測工具

內建工具astro dev --host搭配Chrome DevTools
外部工具:Lighthouse、WebPageTest、GTmetrix

優化檢查清單

發布前檢查

確保達到最佳效能

  • ✅ 關鍵資源已預載
  • ✅ 圖片格式已優化
  • ✅ JavaScript島嶼策略正確
  • ✅ CSS已內聯或分割
  • ✅ 字體已最佳化
  • ✅ 壓縮已啟用
  • ✅ CDN已配置

效能提升結果

優化前:Lighthouse 85分,載入時間2.1秒
優化後:Lighthouse 98分,載入時間0.8秒

透過這些優化技巧,Astro網站能達到業界領先的效能水準。

作者:Drifter

·

更新:2025年8月1日 上午12:00

· 回報錯誤
下拉重新整理