于我来说,Hexo 的
本站搜索
是绝对的刚需功能,但默认的搜索构建方式比较慢,本文记录提速的思路。
背景 {#背景}
- 有国内备案域名、还觉得搜索加载慢的的同学不要看这篇博客,去做博客的 CDN 加速就好了
- 对于没有备案域名,服务器在国外(
vercel
\github
等),且加载数据不那么快的情形下,需要做搜索的加速
加载缓慢的原因 {#加载缓慢的原因}
-
搜索插件需要加载
数据极小,基本不占用时间
-
加载索引文件
search.xml
或local_search.xml
- 加载该文件是最耗时的部分,该文件越大加载越慢,博客中文字越多加载越慢
加速方案 {#加速方案}
减少索引内容 {#减少索引内容}
- 可以设置搜索内容,若仅搜索标题 (搜索内容设置为false) 则会加载快到飞起
提速加载索引文件速度 {#提速加载索引文件速度}
对博客内容建立索引是必要的,我不会妥协
-
另一个加速思路为对原因的对症下药,既然这个文件加载慢,那就把它放在加载快的地方
网上有 前辈 将该文件的加载链接替换为 cdn 链接,可以缓解上述问题
-
修改主题下的
local-search.js
文件 (不同主题的位置会不同, 但是一般都在source/js
这种文件夹里) , 修改链接:(以我的 fluid 主题为例)
实现上的问题 {#实现上的问题}
-
将该文件转为 cdn 文件后确实可以起到加速的作用,但如果图床不是 github 的话需要在每次更新博客后精心维护这个
local_search.xml
文件 -
我的实践思路是,用脚本实现下列功能:
- 更新博客
- 重新生成博客 public 文件夹
- 将
public/local_search.xml
文件拷贝到仓库子模块并上传 - Nginx 图床定期拉取
local_search
文件,并提供链接用于加速文件加载
不得不承认,有些过于复杂,提供一个思路供大家参考
参考资料 {#参考资料}
- https://yunist.cn/hexo/local_search_speed_up/
- https://www.voidking.com/dev-hexo-local-search-accelerate/
文章链接:
https://www.zywvvd.com/notes/hexo/website/35-hexo-local-search-speadup/hexo-local-search-speadup/