前言

由于一些众所周知的原因,GitHub 在大陆的访问速度一直不是很理想,如果你也像我一样将博客,图床等放在 GitHub 托管的话,很可能会有同学投诉访问速度,特别是初次打开的时候,速度着实堪忧。那有没有什么低成本的方案,来加速我们的网站打开速度呢?当然是有的。

CDN 简介

内容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、影片、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

—— Wikipedia

简而言之就是让服务器距离大陆较远的 GitHub ,将托管在那里的静态资源缓存到一个近一点的服务器,从而加快访问。

看了这样的解释你应该能够理解,CDN 虽然能缓解互联压力,可也是要耗费一定的资源的,从而市面上的 CDN 大多是收费的。Cloudflare 虽然有免费 CDN ,可是国内节点致开放给专业版用户使用,价格偏高,而海外的节点又类似负优化,可能还会降低速度。

jsDelivr

jsDelivr 是一个开源公共免费 CDN ,你只需要更改一下链接,就可以享受他们带来的实实在在的速度提升。

目前 jsDelivr 提供 npm, GitHub, WordPress 等项目的镜像。

基础使用

可能看起来,官方的使用方法十分复杂,但其实就一句话:把仓库链接的域名替换成 jsDelivr 的域名。

如托管在 GitHub 的仓库链接都是 https://github.com/username/repo/branch/file 的形式,而我们就可以将前面的 github.com 改成 jsDelivr 提供加速 GitHub 仓库的域名 cdn.jsdelivr.net/gh

嗯,兴冲冲配置一发,发现什么都没有?其实还是有一点点小差别的。比如分支那里,jsDelivr 默认要直接在仓库名后面 @ ,所以真正其实是 https://cdn.jsdelivr.net/gh/username/repo@branch/file 的形式。当然,如果你放在仓库的默认分支,还可以直接将 branch 这个关键字直接删了,变成 https://cdn.jsdelivr.net/gh/username/repo/file 一样能获取到!

另外,如果是一些比较稳定的文件,后面不会频繁地改动,还可以发布成一个版本,然后在 repo@version 就可以引用对应的版本。

加速图床

如果你还记得笔者之前写的 PicGo + GitHub 搭建免费图床 的话,不难发现 jsDelivr 也是能加速这个图床(本质不还是一个 GitHub 仓库嘛)的。我们只需要在 GitHub 图床设置 中将链接设置为 https://cdn.jsdelivr.net/gh/username/repo 即可!前提是你上传到默认分支。

尾巴

这么好的东西,还是有一点限制的。比如单个文件最大不能超过 20M ,但是不限制流量。这 20M 你甚至能来加速一个小视频……

其实还可以加速博客的主题配置,js/css 文件,图标,头像等,从而加速博客的访问速度,比如我的博客在加上 CDN 后访问速度一度从 2s 左右降低到 0.8s ,体验自然是上去了。


 Comments