部署免费公共 CDN 加速服务

2019.01.13 更新:修改 picsum.photos 的 CDN 域名

2019.01.13 更新:Cloudflare 不知为何没有了 IPV6 地址,且部分反代已经套用 Cloudflare,故暂时停用 Cloudflare 节点

2019.01.17 更新:部分站点重新启用 Cloudflare 节点,详情请看 Cloudflare 为你的站点开启 IPv6 网络

2019.01.22 更新:新增 npm 仓库的 CDN

现在,每个前端工程师都明白CDN( Content Delivery Network)的重要性,比如 Jsdelivr ,我就非常推荐使用,不仅能为npm提供加速,更能为 Github Releases 和 Wordpress 插件提供加速服务,尤其是由于 Quantil 的赞助,Jsdelivr 也因此而拥有了数量可观的中国加速节点,这使我觉得 Jsdelivr 可能是最好的静态资源全球加速服务。

但是 Jsdelivr 也不是尽善尽美的,它不能实现对 Github 文件的直接加速,以至于在不打 tag 之前,依然只能使用 Github 自带的预览功能。而 Github 在国内时常抽风的服务器让我困扰,我于是在谷歌上搜寻对 Github 文件的加速服务,我找到了诸如 Staticaly , GitCDN , GitHack ,一类对 Github 文件加速的服务,但无一例外,它们几乎都有一个特点,那就是几乎都是使用 Cloudflare 做加速服务。

这让我的心思开始活泛起来。Cloudflare 本身便提供近乎无限的免费全站资源加速, 我为什么不能搭建一个自己的CDN加速服务呢?这时我开始搜寻相关的技术,我一开始向知乎提问,但由于没有人回答,我不得不关闭了问题。偶然的机会之下,我想到了对 raw.githubusercontent.com 这个域名进行反向代理(Reverse Proxy)。

经过一段时间的尝试,我终于实现了对Github存储库文件的反向代理。

例如,原 Github 文件的预览链接的格式是:

https://raw.githubusercontent.com/:user/:repo/:branch/:file

而在使用我用CDN优化过的链接后:

https://cdn.imst.xyz/gh/:user/:repo/:branch/:file

https://github.cdn.imst.xyz/:user/:repo/:branch/:file

我在实现了反向代理后,立即对我的CDN站点进行了优化,虽然由于没有国内CDN节点,在中国访问速度有所影响,但得益于 Netlify Application Delivery NetworkCloudflare Global Anycast Network ,依然能获得较好的站点响应速度,且全站SSL,支持IPV6。

在对Github文件进行了反向代理的尝试后,我又接连部署了其他几个常用库的CDN。

例如同步 CDNJS 的前端资源库:

https://cdn.imst.xyz/cdnjs/:package/:version/:file

https://cdnjs.cdn.imst.xyz/:package/:version/:file

Unsplash 的优质无版权图片一直很受欢迎,但国内访问也时常抽风,所以也做了个 source.unsplash.com 的反代,可以更快调用 Unsplash 的API。本来也想对源图片做一个CDN,但是由于链接格式太过复杂,应该很少有人会直接调用,所以就没有做反代。

https://cdn.imst.xyz/unsplash/:api

https://unsplash.cdn.imst.xyz/:api

同样的还有 picsum.photos

https://cdn.imst.xyz/picsum/:api

https://picsum.cdn.imst.xyz/:api

Gravatar 头像:

https://cdn.imst.xyz/avatar/:api

https://gravatar.cdn.imst.xyz/:api

npm 仓库:

https://npmreg.cdn.imst.xyz

谷歌字体库已回源国内IP,而谷歌前端库资源过于稀少,故均不提供CDN。

发表评论

电子邮件地址不会被公开。 必填项已用*标注