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,並將請求傳遞給下一個中介軟體。