技术

把搜索留在静态站点里

用构建时索引连接一组文章:不需要数据库,也不把读者的查询发送给第三方。

本文目录

这篇文章记录 V7 的搜索是怎么搭起来的。结论很短:索引在构建时生成,查询在浏览器里完成,没有服务端,也没有第三方。下面是它的工作方式和几个需要留意的细节。

从构建产物开始

静态页面生成后,Pagefind 读取公开文章的正文,并创建搜索索引。导航、页脚和重复按钮不参与索引。

索引的数据来源就是前面那一个公开文章函数,所以草稿与未来日期的内容不会进入索引——这一点不需要额外维护一份排除名单。

按需读取

读者输入关键词时,浏览器从本站获取相关索引片段。没有独立搜索服务器,也不需要后台数据库。

中文与英文文章可以同时出现在结果中。无结果、网络失败与开发环境尚未生成索引,是不同的状态,界面需要分别解释。

搜索不是唯一入口

分类、标签和时间归档仍然保留。即使没有运行 JavaScript,读者也能逐步找到想读的文章。

对静态站点来说,这一点比搜索速度更重要:站点的每一页都可以被直接链接、被搜索引擎收录、被离线保存,搜索只是在这些路径之上增加一层便利。

搜索