Closed jysperm closed 9 years ago
我的博客有大概 100 多篇文章,使用的是我自己用 Jade 编写的主题(在 这里),每次生成的时候都非常慢,个别文件需要将近一秒:
[create] Generated: page/57/index.html (462ms) [create] Generated: 2011/index.html (261ms) [create] Generated: 2011/page/2/index.html (437ms) [create] Generated: 2011/page/3/index.html (576ms) [create] Generated: 2011/page/4/index.html (1000ms)
总计 198 秒:
[info] 512 files generated in 198.155s
但如果使用默认的 landscape 主题的话,则生成仅花费 10 秒,我很疑惑为什么不同的模板引擎差距有这么大。
我尝试在 index.js 中缓存编译后的 Jade 模板:
var jade = require('jade'); var crypto = require('crypto'); templates_cache = {}; function hasher(source) { return crypto.createHash('sha256').update(source).digest('hex'); } hexo.extend.renderer.register('jade', 'html', function(data, locals){ hash = hasher(data.text); cached = templates_cache[hash]; if (!cached) { templates_cache[hash] = cached = jade.compile(data.text, {filename: data.path}); } return cached(locals); }, true);
将耗时从 198 秒降到了 105 秒,但依然不是很理想;我又将基于 hash 换成了基于 data.path 来缓存,似乎也没有明显变化。
更新到 Hexo3 之后只需 25 秒了。
我的博客有大概 100 多篇文章,使用的是我自己用 Jade 编写的主题(在 这里),每次生成的时候都非常慢,个别文件需要将近一秒:
总计 198 秒:
但如果使用默认的 landscape 主题的话,则生成仅花费 10 秒,我很疑惑为什么不同的模板引擎差距有这么大。
我尝试在 index.js 中缓存编译后的 Jade 模板:
将耗时从 198 秒降到了 105 秒,但依然不是很理想;我又将基于 hash 换成了基于 data.path 来缓存,似乎也没有明显变化。