性能是现代网站的关键因素。本文将介绍如何优化您的 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"
/>
图片优化技巧
- 使用 WebP 格式:比 JPEG 和 PNG 更小,质量更好
- 响应式图片:使用
srcset提供不同尺寸 - 懒加载:非首屏图片使用
loading="lazy" - 占位图:使用模糊占位图提升感知性能
代码分割
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 网站:
- ✅ 优化和压缩图片
- ✅ 合理使用客户端指令
- ✅ 内联关键 CSS
- ✅ 配置适当的缓存策略
- ✅ 持续监控性能指标
遵循这些最佳实践,您的网站将获得出色的性能表现!
评论