Hexo 3.2 發布

長期以來,Hexo 在處理大型網站方面一直表現不佳。(#710, #1124, #283, #1187, #550, #1769 等)我們努力解決這個問題,並且在 Hexo 3.2 中進行了一些改進。

速度至上

快取渲染內容

渲染的內容會快取在倉庫中。這節省了大量的時間,並使熱處理(第二次處理)速度**加快了 1.7 倍**。

版本 3.1 3.2
冷處理 6.094 秒 6.454 秒
熱處理 5.154 秒 3.002 秒

延遲載入 highlight.js 的語言檔案

highlight.js 速度很慢。特別是當它嘗試偵測語言時。延遲載入語言檔案可以加快處理速度,並且不必載入大量未使用的語言檔案。但是,有一些限制

  • 必須禁用自動偵測。
  • 您必須在程式碼區塊中指定語言。

您可以在 _config.yml 中設定禁用自動偵測。

highlight:
auto_detect: false

範本預先編譯

如果可能,主題範本會預先編譯。這使得產生速度**加快了 2 倍**。

版本 3.1 3.2
冷產生 27.2 秒 13.6 秒
熱產生 24.4 秒 12.6 秒

以下渲染器已經支援此功能。

並且很容易為渲染器實現預先編譯。只需向渲染器新增一個 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/**/*

更多資訊:更新日誌基準測試結果