背景
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
| sed -i "s#cdn.jsdelivr.net#testingcf.jsdelivr.net#g" *.html
sed -i "s#cdn.jsdelivr.net#fastly.jsdelivr.net#g" *.html
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; } }
|
宝塔面板配置
- 将域名解析到服务器
- 创建网站并配置反向代理
- 设置缓存规则提升性能
警告: 请勿使用阿里云、腾讯云等国内服务商进行反向代理,存在被封禁风险。
方案四:本地化资源
将常用资源下载到本地,彻底摆脱对外部 CDN 的依赖:
1 2 3 4 5
| wget -P ./source/js/ https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js
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 或本地化资源。