Hexo 2.7 发布

Hexo 2.7 已经发布,它带来了三个新功能。我将在下面介绍它们。

片段缓存

虽然 Hexo 速度很快,但如果您有成千上万的源文件或复杂的类别或标签,它可能会变慢。在数据模型升级之前,我借鉴了 Ruby on Rails 的一个功能:片段缓存

片段缓存会保存片段内的内容,并在下次请求时提供缓存。片段只会被处理一次。它可以减少数据库查询并显著减少生成时间。例如,一个拥有 300 多个源文件的 Hexo 网站需要 6 分钟才能生成。在 Hexo 2.7 中,它只需要 10 秒!

它可以在标题、页脚、侧边栏或生成过程中不会更改的静态内容中使用。例如

<%- fragment_cache('header', function(){
return '<header></header>';
}); %>

通过使用 fragment_cache 帮助器,函数中的内容将被缓存。

局部帮助器也支持片段缓存,您只需要在使用局部帮助器时添加一个 {cache: true} 选项即可。

<%- partial('header', {}, {cache: true}) %>

Landscape 已更新,现在支持片段缓存。您可以查看 这个提交,了解发生了哪些更改。

相对链接

从 Hexo 2.7 开始支持相对链接。但您的主题需要一些修改才能支持它。不过,它并不像您想象的那么难。您只需要在模板中将以下内容替换为

<%- config.root %><%- path %>

url_for 帮助器。

<%- url_for(path) %>

url_for 帮助器会自动为您添加 config.root。如果您启用 relative_link 设置,它将添加一个相对路径。

Landscape 已更新以支持相对链接。您可以查看 这个提交,了解发生了哪些更改。

服务器中间件

如果您以前使用过 ConnectExpress,您应该熟悉服务器中间件。 Connect 通过称为中间件的函数传递请求。您可以在中间件中对传入的请求做出响应。

在 Hexo 中,中间件作为一种过滤器。您可以通过注册一个新的过滤器来添加中间件。例如

hexo.extend.filter.register('server_middleware', function(app){
app.use(function(req, res, next){
res.setHeader('X-Powered-By', 'Hexo');
next();
});
});

这个中间件添加一个 X-Powered-By 头并把请求传递到下一个中间件。