干!

众所周知最近 jsDelivr 被神秘力量屏蔽了,这可不得了了,因为有许多 blogger 都是直接用的 jsDelivr 的 CDN,而咱用的 butterfly 主题也是默认全部使用 jsDelivr 的 CDN。

先给大家伙康康咱的 blog 寄成什么样了。

寄1 - 菜单图标不见了

寄2 - 头像不见了

寄3 - 友链头像也不见了

寄4 - 数学公式被打回原形

简直惨不忍睹。

思!

刚开始咱本来打算在 Vercel 上部署一个项目,当作 jsDelivr 的镜像,不定期同步一下,可以通过 Vercel 的链接来访问。

但是想想似乎太麻烦了,一是需要自己写个脚本来更新,二是写完之后还得自己去同步(当然也可以整个 GitHub Actions 来做自动化)。

后来突然想起来咱以前不是玩过 Vercel 的 Serverless 嘛,Serverless 里可以直接通过设置路由来获取指定的内容,而这个内容并不是简单的重定向,而是让 Vercel 的服务器去获取的!


Vercel 的服务器并不受神秘力量的影响,虽然 jsDelivr 被神秘力量屏蔽,但是咱们可以部署想要的东西到 Vercel 上,Vercel 就是咱们的魔法信使,它可以穿梭于神秘力量范围内外,就可以帮助咱们完成和 jsDelivr 的通信~

没戳!这就是 Proxy!

修!

咱直接上 GitHub 建了个新项目,里面只需要写一个文件 .vercel/output/config.json

文件内容如下:

1
2
3
4
5
6
7
8
9
10
{
"version": 3,
"routes": [
{
"src": "/(.*)",
"dest": "https://cdn.jsdelivr.net/$1",
"status": 200
}
]
}

这里配置的意思就是访问 Vercel Serverless 服务的根目录的时候,去 jsDelivr 获取数据并返回。

项目在 Vercel 部署完成后,简单拿个 jsDelivr 的链接来测试下,没问题就可以去 blog 目录下全局替换了:

换!

大功告成!

哼着小曲儿在控制台敲下 hexo clean; hexo s -g ,却发现被背刺了!

不讲武德

(这里不是所有的小伙伴都会遇到)

仔细看看生成的博客,换了,但好像没完全换;好了,但好像也没完全好……

打开网页调试工具一看,有俩孩子仍旧报错:fontawesomefancybox ,调试工具显示它们的请求仍然是 jsDelivr ,吓得咱赶紧又去 VSCode 里查找了一下,但是整个目录都没有再发现 jsDelivr 的影子了,那也就是说咱的配置有问题?

咱突然想起来之前似乎在新版本的 butterfly 的主题配置下看到过:xxxxV4 这种字眼,似乎是新版本的 butterfly 把配置的 key 换了,主题没有读取到正确的配置就用了默认的 jsDelivr。

然后咱去 butterfly 的仓库上看了一下,果然,上面这两个家伙的 key 分别被换成了 fancybox_v4/fancybox_css_v4fontawesomeV6

于是咱找到了(可以自己打破神秘力量上 jsDelivr 搜索,也可以去对应的文档里找最新的 jsd CDN 链接)这两个的链接,给换上了。

好!

这个问题主要还是因为咱的主题并不是直接使用的新版本,咱是从旧版本升级上来的,并且咱在升级的时候没有跟进更新 config 文件。

如果你没有开启 fancybox 这些功能,或者一开始就是使用的新版本的主题的话,就不会有咱这样子的问题。