前言
由于一些众所周知的原因,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 ,体验自然是上去了。