jsDelivr 遭 DNS 污染后的恢复与替代方案

2022 年 4 月 28 日,jsDelivr 在中国大陆确认遭到 DNS 污染。对站长来说,这天的表现就是页面里挂在 cdn.jsdelivr.net 上的样式和脚本一夜之间全部失效。这篇记录当时的处理思路和现在还能用的替代源。

图片[1]-jsDelivr域名遭到DNS污染的解决方案-本站

换子域名:污染只针对 cdn.jsdelivr.net

这次的污染范围只有 cdn.jsdelivr.net 这一个域名。jsDelivr 背后有多家 CDN 赞助商,每家都有自己的专有子域名,把资源链接换成这些二级域名就能恢复访问。

图片[2]-jsDelivr域名遭到DNS污染的解决方案-本站
  • 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 一旦再出污染或停服,页面不应整体瘫痪。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容