Hexo -35- 搜索功能 Local Search 加速

本文最后更新于:2022年8月5日 晚上

于我来说,Hexo 的 本站搜索 是绝对的刚需功能,但默认的搜索构建方式比较慢,本文记录提速的思路。

背景

  • 有国内备案域名、还觉得搜索加载慢的的同学不要看这篇博客,去做博客的 CDN 加速就好了
  • 对于没有备案域名,服务器在国外(vercel \ github 等),且加载数据不那么快的情形下,需要做搜索的加速

加载缓慢的原因

  • 搜索插件需要加载

    数据极小,基本不占用时间

  • 加载索引文件 search.xmllocal_search.xml

    • 加载该文件是最耗时的部分,该文件越大加载越慢,博客中文字越多加载越慢

加速方案

减少索引内容

  • 可以设置搜索内容,若仅搜索标题 (搜索内容设置为false) 则会加载快到飞起

提速加载索引文件速度

对博客内容建立索引是必要的,我不会妥协

  • 另一个加速思路为对原因的对症下药,既然这个文件加载慢,那就把它放在加载快的地方

    网上有 前辈 将该文件的加载链接替换为 cdn 链接,可以缓解上述问题

  • 修改主题下的 local-search.js 文件 (不同主题的位置会不同, 但是一般都在 source/js 这种文件夹里) , 修改链接:(以我的 fluid 主题为例)

    1
    2
    3
    4
    // 原始链接
    var path = CONFIG.search_path || '/local-search.xml';
    // 修改后的链接
    var path = link-to-cdn-local_search.xml
实现上的问题
  • 将该文件转为 cdn 文件后确实可以起到加速的作用,但如果图床不是 github 的话需要在每次更新博客后精心维护这个 local_search.xml 文件

  • 我的实践思路是,用脚本实现下列功能:

    • 更新博客
    • 重新生成博客 public 文件夹
    • public/local_search.xml 文件拷贝到仓库子模块并上传
    • Nginx 图床定期拉取 local_search 文件,并提供链接用于加速文件加载

    不得不承认,有些过于复杂,提供一个思路供大家参考

参考资料


Hexo -35- 搜索功能 Local Search 加速
https://www.zywvvd.com/notes/hexo/website/35-hexo-local-search-speadup/hexo-local-search-speadup/
作者
Yiwei Zhang
发布于
2022年6月21日
许可协议