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網站能達到業界領先的效能水準。