静态站点的优势在于速度和可靠性,但优化并非自动完成。以下内容记录了从构建策略到资源加载的实际调整过程,适用于使用 Astro、Vite 或类似工具的项目。
理解构建输出
生产构建会生成纯静态文件,这意味着所有优化都发生在构建阶段。了解 dist 目录的内容是第一步:HTML 页面、CSS bundle、JavaScript chunk、以及生成的搜索索引。
bun run buildls -la dist/重点关注文件大小分布和重复资源。如果多个页面加载相同的样式或脚本,应该考虑提取为共享模块。
CSS 策略
Tailwind CSS 4 通过 Vite 集成后,未使用的工具类会在构建时自动移除。但需要注意以下事项:
- 确保所有使用的类名在模板中实际出现
- 动态生成的类名需要写入
content.config.ts - 自定义色盘变量应放在独立的样式文件中便于维护
:root { --accent: #6b7d70; --paper-bg: #fdfdf9;}图片优化流程
Astro 提供 SmartImage 组件自动处理响应式和懒加载。对于需要更多控制的场景:
- 使用
sharp在构建前压缩图片 - 为高分辨率屏幕提供 WebP/AVIF 格式
- 设置合理的
loading="lazy"和decoding="async"
---import SmartImage from '../../components/SmartImage.astro';---<SmartImage src="/images/hero.webp" alt="Performance optimization diagram" width={1200} height={630}/>搜索索引生成
Pagefind 在构建完成后运行,为 dist 目录中的内容创建全文索引。如果修改了文章内容但搜索没有更新:
- 先完成 Astro 生产构建
- 确认
dist/pagefind/目录存在 - 重新运行 Pagefind 或检查 CI 流程是否正确触发
开发环境中如果还没有生产索引,搜索弹层会显示索引不可用提示。
关键指标参考
| 指标 | 目标值 | 说明 |
|---|---|---|
| LCP | < 2.5s | 最大内容绘制时间 |
| CLS | < 0.1 | 累积布局偏移 |
| FID | < 100ms | 首次输入延迟 |
静态站点通常能自然满足这些指标,前提是避免加载不必要的 JavaScript 和过大的图片资源。
Comments
Quiet notes for this article.