Hexo 3.2 发布

Hexo 在处理大型网站方面一直很糟糕。(#710, #1124, #283, #1187, #550, #1769, 等等)。我们努力解决这个问题,在 Hexo 3.2 中做了一些改进。

速度至上

缓存渲染内容

渲染后的内容被缓存到仓库中。这节省了大量时间,使热处理(第二次处理)快了 1.7 倍

版本 3.1 3.2
冷处理 6.094s 6.454s
热处理 5.154s 3.002s

延迟加载 highlight.js 的语言文件

highlight.js 很慢。特别是在它尝试检测语言时。延迟加载语言文件使处理速度更快,并且不需要加载一堆未使用的语言文件。但是,也有一些限制

  • 必须禁用自动检测。
  • 您必须在代码块中指定语言。

您可以在 _config.yml 中设置禁用自动检测。

highlight:
auto_detect: false

模板预编译

如果可能,主题模板将被预编译。这使生成速度快了 2 倍

版本 3.1 3.2
冷生成 27.2s 13.6s
热生成 24.4s 12.6s

以下渲染器已经支持此功能。

并且为渲染器实现预编译很容易。只需向渲染器添加一个 compile 函数即可。以 EJS 渲染器为例

var ejs = require('ejs');
var assign = require('object-assign');

function ejsRenderer(data, locals) {
return ejs.render(data.text, assign({filename: data.path}, locals));
}

ejsRenderer.compile = function(data) {
return ejs.compile(data.text, {
filename: data.path
});
};

module.exports = ejsRenderer;

包含/排除源文件

您可以在 _config.yml 中包含/排除指定的源文件。

include:
- .htaccess

exclude:
- tmp/**/*

更多信息:变更日志, 基准测试结果.