加速个人博客访问

假设我们已经搭建好了个人博客并可以正常访问,下一步要关心的,就是尽可能改善博客的访问体验。 这篇文章将侧重于优化静态站点在国内的访问体验,并对比几个常见服务商的性价比。

Profiling

首先,一个比较简单的网站访问流程是:

Client ---> DNS ---> *CDN* ---> index ----> *后台应用及数据库*
               \           \         \---> *外部资源*
                \           \
                 \           \--> 静态资源(js/css)
                  \
                   \--> *CDN* ---> *多媒体文件(jpg/pdf/zip)*

* * 括起来的内容,代表这是可选的项。

“No profiling, no optimization.”,幸好这几个部分的加载时间都可以在浏览器控制台中看到:

Timing1

因而应该根据这些条目逐项进行分析。 下面针对这几个部分,逐一分析可加速的手段。

DNS解析服务

DNS的作用,就是解析域名的物理地址。它影响的是网站的初次访问速度,因为初次解析域名后本地会有缓存。 所以第二次访问或者浏览网站中的子页面,都会明显比初次访问要快不少。 参考下图:

Timing2

即便只影响初次访问速度(事实上很多情况下你的网站也就顶多被访问一次而已),网站的DNS解析服务依然比较重要。 最极端的情况是输入网址后浏览器提示:

找不到 xxxx.com 的服务器 DNS 地址。

选择DNS解析服务需要考量哪些方面的指标? 直接去看DNS服务商它们在宣传什么就知道了 :P

不过好在DNS服务比较成熟,市面上的各家服务都相对稳定,并且几乎免费。 一般来说,没有特殊的需求的话直接用默认的NameServer就好。

有关第三方的DNS解析服务,如果想要在国内比较好的访问体验,推荐DNSPod或CloudCXNS。 此外,除了国内解析速度较慢,CloudFlare也是非常不错的选择,因为它同时提供了许多其他的免费服务(后文会讲)。

对象存储服务(图床)

一般而言,博客的多媒体文件最好和网站分离。 一方面是可以提升访问性能,另一方面,对于GitHub Pages等静态页面托管服务,提供的空间都是很小的,完全不应该存放图片等二进制文件。

以博客的贴图为例,微博相册貌似是目前看起来最靠谱的免费图床了,但是微博貌似从来没有保证过永久不限外链(就算宣称“永久免费”,说翻脸就翻脸的例子也是数不胜数)。

所以千万不要随便搜个“免费图床”就用,可靠性太低了,并且图床失效带来的损失是相当大的。

此外,免费图床往往不支持https(如果追求全站https、地址栏小绿锁的话,图床也必须支持https),也不可以自定义域名和图片名,管理/备份都非常不方便,这样也进一步加大了迁移成本。

因此,还是自己弄个对象存储服务靠谱,比较一下常见的几家对象存储服务:

(插一句吐槽:OSS/COS/S3/OBS/OOS/BOS这些乱七八糟的玩意其实本质都是对象存储服务,囧rz)

CDN服务

CDN或许最能直接带来访问体验的提升了,它主要影响TTFB时间和下载时间(上图中绿色和蓝色条)。当然它的价格也是最高的,不过好在流量不大的话,还是有很多免费/便宜的选择。

接入国内CDN的域名是一定要备案的(一些小的国内CDN服务商号称免备案,但是说不定哪天就挂了)。 而CDN服务目的就是加速,如果目标访客是国内用户的话,只有国内的CDN服务器才有加速效果,用国外CDN反而可能减速 -_-

因此结论是,要想用CDN加速,网站就要备案(备案又是一个大话题,下一篇博客再讲)。

评价一下我用过的几个CDN服务:

总结:

无论是DNS还是对象存储服务或是CDN,最好都用同一家的云服务产品。 不仅是因为产品整合度高、用起来方便,同一厂商的产品之间是内网访问,开销也更小。

如果不在乎花钱的话,阿里云貌似是不错的选择,虽然它的各项产品都是最贵的,但得益于起步早,因此功能比较齐全,也比较少遇到Bug。 但是对于想要尽可能降低成本的个人网站而言,不推荐阿里云,比较贵,而其他大厂的免费服务也都足够用了。

我的博客是托管在GitHub Pages上的,我的选择是使用CloudFlare的DNS以及反向代理CDN服务,而图片另外使用腾讯云COS+腾讯CDN。 因为我的目标很明确,一定要全站https,并且尽可能便宜。 几家产品当中,腾讯云的https价格最低,并有免费额度,因此图床和CDN就都用腾讯云了。

那为何又要用“云减速”的CloudFlare呢? 因为源站是GitHub,CloudFlare的回源速度肯定比国内的CDN都要快,所以也扳回一城。 并且我认为CloudFlare的产品很棒,值得牺牲一点访问时间去使用它。


Powered by Jekyll and Theme by solid