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 辅助函数,函数中的内容将被缓存。

Partial 辅助函数也支持片段缓存,在使用 Partial 时你只需要添加一个 {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并将此请求传递给下一个中间件。