Astro 性能优化指南

了解如何优化 Astro 网站的性能,包括图片优化、代码分割和缓存策略。

性能是现代网站的关键因素。本文将介绍如何优化您的 Astro 网站,以获得最佳的用户体验。

图片优化

Astro 提供了强大的图片优化功能:

使用 Image 组件

---
import { Image } from 'astro:assets';
import myImage from '../assets/my-image.jpg';
---

<Image 
  src={myImage} 
  alt="描述文字" 
  width={800} 
  height={600}
  format="webp"
/>

图片优化技巧

  1. 使用 WebP 格式:比 JPEG 和 PNG 更小,质量更好
  2. 响应式图片:使用 srcset 提供不同尺寸
  3. 懒加载:非首屏图片使用 loading="lazy"
  4. 占位图:使用模糊占位图提升感知性能

代码分割

Astro 的岛屿架构天然支持代码分割:

---
import InteractiveComponent from '../components/InteractiveComponent.jsx';
---

<!-- 这个组件只在客户端加载 JavaScript -->
<InteractiveComponent client:visible />

加载指令

指令说明
client:load立即加载
client:idle浏览器空闲时加载
client:visible进入视口时加载
client:media匹配媒体查询时加载
client:only只在客户端渲染

CSS 优化

使用 CSS 变量

:root {
  --color-primary: #2563eb;
  --color-text: #1f2937;
  --font-sans: system-ui, sans-serif;
}

关键 CSS

将首屏必需的 CSS 内联到 HTML 中:

<style is:inline>
  /* 关键样式 */
  .hero { /* ... */ }
</style>

缓存策略

静态资源缓存

astro.config.mjs 中配置:

export default defineConfig({
  build: {
    assets: 'assets',
    assetsPrefix: 'https://cdn.example.com'
  }
});

Cloudflare 缓存

使用 Cloudflare 的页面规则:

URL: *your-blog.pages.dev/assets/*
Cache Level: Cache Everything
Edge Cache TTL: 1 month

性能指标

Core Web Vitals

指标目标值说明
LCP< 2.5s最大内容绘制
FID< 100ms首次输入延迟
CLS< 0.1累积布局偏移

使用 Lighthouse

定期运行 Lighthouse 检查:

npm install -g lighthouse
lighthouse https://your-blog.pages.dev --view

总结

通过以下方式优化您的 Astro 网站:

  1. ✅ 优化和压缩图片
  2. ✅ 合理使用客户端指令
  3. ✅ 内联关键 CSS
  4. ✅ 配置适当的缓存策略
  5. ✅ 持续监控性能指标

遵循这些最佳实践,您的网站将获得出色的性能表现!

评论