为什么 Hexo 生成需要这么长时间?

Why does Hexo generation take so long?

随着文件数量的增加,Hexo 花费越来越多的时间使用 'hexo g' 生成静态 HTML 文件。为什么 Hexo 会重建每个单独的 '.md' 文件,而不是将自己限制在修改的文件中?

我的 Hexo 版本是 3.0.1.

您明确告诉 Hexo 重建每个 post。每次添加新文件时,Node 都会花费更长的时间来解释 .md 文件。

命令 'hexo -g' 可以分为两部分: 'hexo' 表示您希望 Hexo 完成以下命令。 '-g'是'generate'的缩写。使用 'generate' 这个词而不加任何修饰符就是告诉 Hexo 它应该重建 Hexo 文件夹中可用的每个 post。

以我有限的经验,开发人员仅在以下情况下使用 'hexo -g':

  • 执行首次设置或维护
  • 无法回忆起他们未发表作品的名字 post

如果您的计算机可以在合理的时间内处理 .md 文件,那么一定要使用 'hexo -g.'

这取决于几件事,但主要瓶颈是:

主题不使用缓存

作者去年介绍fragment cache缓存静态部分(页眉,页脚,侧边栏)。
由主题作者使用它来加速页面生成。
你可以试试换成其他的主题,看看有没有什么不同。

highlight.js 语言检测

highlight.js如果从3.0开始没有指定语言,将尝试自动检测代码块中的语言,这需要相当长的时间。
考虑使用 plain and auto_detect option (#1124) 并查看是否有任何不同。


mentioned但未承诺使用增量方法生成静态 HTML。

我使用 Hexo 的工作流程是:
- hexo serve 预览更新
你在这一步迭代修改
使用 hexo-livereload 可以节省您主动重新加载页面的时间
- hexo generate/hexo deploy 发布您的网站

最容易改善性能问题的组件之一是 markdown stock 渲染器。幸运的是,有很多选择 - 例如,hexo-renderer-markdown-it 试一试:

  1. 将您的 hexo 安装克隆到一个单独的目录中(或者只是将您当前的目录复制到另一个目录中)
  2. $ npm un hexo-renderer-marked --save
  3. npm i hexo-renderer-markdown-it --save
  4. 运行 "hexo g" 在两个目录中比较性能