Astro 静态博客的搜索、RSS 与站点地图
364 字
2 分钟
Astro 静态博客的搜索、RSS 与站点地图
静态站点没有后端,但依然可以实现搜索、RSS 和站点地图。本文以本站为例简单梳理实现思路。
全文搜索:Pagefind
本站使用 Pagefind 实现全文搜索。它在构建完成后扫描 dist/ 目录下的静态 HTML,生成切分好的索引文件:
astro build && pagefind --site dist特点是:
- 搜索完全在浏览器端进行,不需要任何服务端;
- 索引按需分片加载,只在搜索时才请求,不影响首屏性能;
- 对中文支持良好(内置字符级切分)。
RSS 订阅
Astro 官方的 @astrojs/rss 可以在构建时生成 RSS 订阅源,核心逻辑就是遍历文章集合:
import rss from "@astrojs/rss";
export async function GET(context) { const posts = await getCollection("posts"); return rss({ title: "拾光小筑", description: "记录、思考与生活", site: context.site, items: posts.map((post) => ({ title: post.data.title, description: post.data.description, pubDate: post.data.published, link: `/posts/${post.slug}/`, })), });}读者只需要在阅读器里订阅 https://你的域名/rss.xml 即可。
站点地图与 SEO
站点地图由 @astrojs/sitemap 自动生成,配合 astro.config.mjs 中的 site 字段,构建时输出 sitemap-index.xml。再配合:
robots.txt(本站由src/pages/robots.txt.ts动态生成);- 每篇文章的 Open Graph 元信息;
- 语义化的 HTML 结构,
就能获得相当不错的搜索引擎表现。
小结
静态博客的”功能缺失”大多可以用构建时方案补齐。搜索、RSS、站点地图这三件套,本站已经全部就位。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Astro 静态博客的搜索、RSS 与站点地图
https://c75c3a79.thisissam.pages.dev/posts/astro-search-rss-sitemap/

