jsDelivr 国内访问异常解决方案

背景

2021年12月,jsDelivr 在中国大陆地区访问异常。官方公告显示,由于 jsDelivr 失去了国内备案,导致国内 CDN 加速服务被取消,被迫切换到全球 CDN,访问速度大幅下降。

本文将介绍多种解决方案,帮助你应对 jsDelivr 访问问题。

方案一:更换国内公共 CDN

Staticfile CDN(七牛云)

1
<script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>

七牛云提供的开源库 CDN 服务,稳定可靠。

BootCDN

1
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

Bootstrap 中文网提供,运营时间长,资源丰富。

360 前端静态资源库

1
<script src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js"></script>

奇舞团维护,支持 HTTPS 和 HTTP/2。

方案二:切换 jsDelivr 子域名

主域名 cdn.jsdelivr.net 在国内访问受限,可尝试以下子域名:

1
2
3
4
5
6
7
8
# CloudFlare 线路
sed -i "s#cdn.jsdelivr.net#testingcf.jsdelivr.net#g" *.html

# Fastly 线路
sed -i "s#cdn.jsdelivr.net#fastly.jsdelivr.net#g" *.html

# GCORE 线路
sed -i "s#cdn.jsdelivr.net#gcore.jsdelivr.net#g" *.html

注意: 这些子域名同样可能被墙,稳定性无法保证。

方案三:反向代理 jsDelivr

通过 Nginx 反向代理自建 CDN 服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name cdn.yourdomain.com;

location / {
proxy_pass https://cdn.jsdelivr.net;
proxy_set_header Host cdn.jsdelivr.net;
proxy_ssl_server_name on;
proxy_ssl_name cdn.jsdelivr.net;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

宝塔面板配置

  1. 将域名解析到服务器
  2. 创建网站并配置反向代理
  3. 设置缓存规则提升性能

警告: 请勿使用阿里云、腾讯云等国内服务商进行反向代理,存在被封禁风险。

方案四:本地化资源

将常用资源下载到本地,彻底摆脱对外部 CDN 的依赖:

1
2
3
4
5
# 下载 jQuery
wget -P ./source/js/ https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js

# 下载 Bootstrap
wget -P ./source/css/ https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css

在配置文件中使用本地路径:

1
2
3
static_prefix:
jquery: /js/jquery.min.js
bootstrap: /css/bootstrap.min.css

总结

方案 优点 缺点
更换国内 CDN 配置简单,稳定可靠 资源版本可能滞后
切换子域名 改动最小 不稳定,随时可能被墙
反向代理 自主可控 需要服务器,维护成本高
本地化资源 完全自主,不受影响 增加项目体积,更新不便

建议根据实际情况选择合适的方案,优先考虑使用国内公共 CDN 或本地化资源。


jsDelivr 国内访问异常解决方案
https://blog.15xd.cn/posts/8c48d2f1.html
作者
周次辉
发布于
2022年5月21日
许可协议