2022 年 4 月 28 日,jsDelivr 在中国大陆确认遭到 DNS 污染。对站长来说,这天的表现就是页面里挂在 cdn.jsdelivr.net 上的样式和脚本一夜之间全部失效。这篇记录当时的处理思路和现在还能用的替代源。
![图片[1]-jsDelivr域名遭到DNS污染的解决方案-本站](https://i1.img.azhai.de/v3/f6d7ea3864616aa8.jpg)
换子域名:污染只针对 cdn.jsdelivr.net
这次的污染范围只有 cdn.jsdelivr.net 这一个域名。jsDelivr 背后有多家 CDN 赞助商,每家都有自己的专有子域名,把资源链接换成这些二级域名就能恢复访问。
![图片[2]-jsDelivr域名遭到DNS污染的解决方案-本站](https://blog.azhai.de/wp-content/uploads/0b7363fd24011854-1024x742.png)
- CloudFlare:
test1.jsdelivr.net - CloudFlare:
testingcf.jsdelivr.net - Fastly:
fastly.jsdelivr.net - GCORE:
gcore.jsdelivr.net
cdn.jsdelivr.net 本身就是这几家服务的综合调度,特定情况下只解析到某一家。换哪个快,自己去 boce 这类测速网站按自己的访客分布测,我这边测下来 fastly 最好。这些子域名的速度普遍一般,而且前途并不明朗,建议只作临时过渡。DNS 污染比换 CDN 前缀更难防,最终还是要有整体迁移到别的服务的准备,在用 jsDelivr 的站长建议尽快更换,不然一定会有访客打不开。
前端静态库的替代 CDN
如果只是想找前端库的 CDN,下面几家可以顶上:
- https://www.staticfile.org/ —— 七牛云和掘金提供支持
- https://www.bootcdn.cn/ —— 极兔云联合 BootStrap 中文网提供
- https://cdn.bytedance.com/ —— 字节跳动提供,内容与 cdnjs 一致
- https://www.sourcegcdn.com/ —— AHDark 创立,支持 npm 和 GitHub(白名单制)
- https://cdnjs.com/ —— CloudFlare 等提供支持
- https://unpkg.com/ —— 同样有 CloudFlare 支持,但仅限 npm 包
这些站点的问题是部分包的更新不及时,所以只要 jsDelivr 没有大面积不可用,它仍然是首选。
两类需求没有好替代
一类是加速 GitHub 上的文件:jsDelivr 直接把仓库路径映射成 CDN 链接,太方便,目前没找到对等的替代。另一类是给个人图片等资源当图床:公共静态文件 CDN 不是为这个场景准备的,大量个人资源往上面堆是在浪费公共资源,比如有人往 npm 官方发空包就为了当图床,这种做法实际是在污染 npm,不要在自家服务上模仿。
落地的注意事项
改法上就是把模板里的 cdn.jsdelivr.net 批量替换成选定的子域名,替换完清一遍缓存再抽查几个页面。更稳妥的路线是把关键库自托管到站点自己的静态目录,只把非核心资源留给公共 CDN;公共 CDN 一旦再出污染或停服,页面不应整体瘫痪。
















暂无评论内容