一个计算机技术爱好者与学习者

0%

好好学Hexo:Hexo本地搜索加速(七牛版)

1. 前言

《Hexo本地搜索加速》一文中,给 search.xml 文件配置了 jsdelivr CDN。但是,jsdelivr CDN 目前国内已经无法访问了,只能另外寻找一个替代。

可选的替代包括:

  • statically.io
  • githack.com

配置方法可以参考hexo-theme-next/commit/2ff6c11,但是,这些替代CDN,国内也无法访问。找来找去,最终锁定了七牛,一直用它作为图床,其实用做 search.xml 文件的存储仓库,也很合适。

本文就来学习一下使用七牛作为 search.xml 存储仓库的方法。

2. 准备工作

2.1. 安装配置hexo环境

参考文档《Hexo环境搭建2021年8月版》,安装配置hexo环境。

执行 hexo g 命令,在 public 目录中生成要部署的静态文件,其中包含 search.xml 。

2.2. 获取七牛api key

访问七牛密钥管理页面,创建一个密钥对(AccessKey/SecretKey)。

2.3. 安装七牛依赖

1
npm install qiniu --save

3. 上传 search.xml

参考文档:对象存储 - Node.js SDK

1、实现上传脚本 upload-qiniu.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const qiniu = require('qiniu');
const fs = require('fs');

// 七牛配置
const accessKey = '您的七牛Access Key';
const secretKey = '您的七牛Secret Key';
const bucketName = '您的存储空间名称';
const key = 'doc/search.xml'; // 如果需要覆盖之前文件/图片,使用相同的key

const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);

const config = new qiniu.conf.Config();
config.zone = qiniu.zone.Zone_z0; // 华东地区,根据需要选择合适的地区

const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();

// 上传文件
const uploadImage = () => {
// 读取本地文件
const localFile = './public/search.xml';
const readStream = fs.createReadStream(localFile);

// 生成上传凭证
const options = {
scope: `${bucketName}:${key}`,
force: true, // 强制覆盖同名文件
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(mac);

// 开始上传
formUploader.putStream(uploadToken, key, readStream, putExtra, (respErr, respBody, respInfo) => {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode === 200) {
console.log('上传成功', respBody);
} else {
console.log('上传失败', respInfo.statusCode, respBody);
}
});
};

uploadImage();

2、测试上传脚本

1
node upload-qiniu.js

上传成功后出现提示:

1
上传成功 { hash: 'FkYxkyrsSytBGvgYgEvPs28lVI40', key: 'doc/search.xml' }

4. 主题中配置使用七牛CDN

Next主题中,配置使用七牛CDN中的 search.xml。
具体配置方法参考hexo-theme-next/commit/2ff6c11

5. 整合到自动部署

参考《Hexo配置GitHub Actions自动构建发布》,配置自动部署。
具体配置方法参考hexo-deploy/commit/0e3503d