Even主题所用资源CDN迁移方法及实践
文章目录
前言
Jsdelivr在今天因DNS污染挂了一段时间,而几个月前也挂过,而且在Jsdelivr有国内ICP备案时就也会偶尔抽风,自从去年Jsdelivr的ICP备案掉了后国内的访问请求就全部由Cloudflare和Fastly承担了。而Even主题用到的js、css大多只挂在npm上而不需要用到GitHub上的资源,想想看,还是决定把Even主题默认的Jsdelivr CDN换了,改成unpkg.com的CDN。本文就是介绍Even主题更换cdn时的坑。
注:我使用的Even主题版本为4.0.0,新版可能修复了这些问题。
修改步骤
1. 修改config.toml
找到config.toml其中的params.publicCDN项,将所有的cdn.jsdelivr.net/npm
替换为unpkg.com
,不过替换完这一处只是部分js的cdn改变了。如果你有在使用Gitalk的话你就会发现怎么Gitalk还是从jsdelivr加载。因此我们还要进行第二步。
2. 修改comments.html
找到主题文件夹下的layouts\partials\comments.html文件,将有Gitalk注释下的代码由
|
|
替换成
|
|
即可,本质上就还是将cdn.jsdelivr.net/npm
这一套替换成unpkg.com
。
3. 修改head.html
在comments.html的同一个文件夹中能找到head.html,将此文件中的
|
|
替换为
|
|
完成。
后记
虽然现在jsdelivr重新从墙里放出来了,但不能保证后续jsdelivr不会再次被墙,目前来看最稳妥的方式还是换个cdn。
20220523更新
确实jsdelivr的cdn子域名又被墙了,不过测试发现fastly子域名没有,因此写了个Nginx配置,运行在本地,做301跳转,用以解决部分网站依赖jsdelivr CDN的问题,不过不是什么长久之计。
|
|
同时HOSTS文件中也要填入
|
|
其中的ssl证书需要用户自行签发,我这就不提供了。可以搜索openssl自签证书或者用本博客之前提到过的XCA来管理证书。
20220624更新
cdn.jsdelivr.net
又从墙里出来了,不过是不建议再用了。Gooreplacer扩展也可以做到20220523更新提到的内容,具体配置如下图。
文章作者 Gulut
上次更新 2022-06-24