这个博客是如何运作的
April 21, 2019
经过一段时间的运行,我对目前博客技术实现方案还比较满意,不妨在这里给大家分享一下。
我的需求
基于自身的需求,我对自己的博客制定了以下目标:
- 数据掌握在自己手里:这样即使网站倒闭,依旧可以快速恢复所有的文章
- 方便:搭建方便,创作方便,无需耗费很多的精力在运维,而更多地聚焦于创作
- 基于 Markdown:Markdown 作为一种轻量的标记语言,可以让我专注在内容本身
- 速度快:为了便于用户访问,网站必须有可接受的响应速度
选择合适的平台
掌握自己的数据
我们见过太多的第三方博客平台了。Blogcn、新浪/网易博客、Blogger、博客园这些都开始没落了,如今比较火的可能有简书、Medium 等等。这些博客平台随着互联网的发展,有的慢慢消逝,有的又逐渐兴起。
然而,在使用这些第三方平台的时候,我们不可避免的需要将文章保存在平台的服务器上。这也就意味着,在平台运营过程中或倒闭后,我们的文章存在丢失的风险。除此之外,很多平台并没有提供健全的编辑、备份服务。
你总不希望辛辛苦苦写出的文章就这么被抹去了吧。基于我上面的需求,第三方平台显然不在我的选择之列,我希望自己能够掌握自己的数据。
动态网站 vs 静态网站
既然我要选择自建网站,那么问题来了?我该选择稳定发展多年的 Wordpress 还是如今深受 Geek 喜欢的静态网站生成工具呢。不可否认的是,Wordpress 是个非常强大的开源博客系统,如今我们用 CMS 系统来描述它似乎更为贴切。
动态网站拥有极大的灵活性,也包含丰富的功能,但相对于静态页面来说还是略显臃肿,甚至你不得不需要一台云主机来托管它。你需要为云主机做一些基本的配置(更新系统,端口配置,安全策略设置),安装一堆依赖,设置反向代理和 HTTPS 等等。(当然,有经验的你可能会选择 Docker 来简化这一切。)
如果从速度的角度来说,自然也是不如静态页面的。动态博客丰富的功能在此时反而成为了掣肘,很多请求可能会经过层出不穷的中间件以及第三方插件,从而拖慢了访问速度。而静态网页由于确定性就快了很多,还可以利用 CDN 加速,哪怕服务器崩了,重建也很方便。
静态博客
什么是静态博客?我们知道无论动态网站还是静态网站,实际上最终展示给用户的都是 HTML 格式的文本。
Hugo 是一个非常流行的静态博客生成软件,使用 Go 语言编写,拥有丰富的功能和高效的运行速度,与之类似的还有使用 Node 编写的 Hexo,Python 编写的 Pelican 等等,虽然所用语言不同,但大体相似。