这个其实是对某个我不好说的人的反向迁移的某种解释。你可以说这是对我的打脸。
这也是我对另外一个人的选型误区的回复。
你都需要维护什么?
WordPress需要维护:操作系统、Web Server、PHP、MySQL/MariaDB、WordPress、依附在WordPress上面的额外插件。
静态页面生成器,如Hexo、Jekyll:操作系统、Web Server、生成器框架、依附在框架上面的主题和内容。
你可以从中寻找出一些区别:WordPress是比静态页面生成器生成出来的网页更为庞杂的,你要处理的也比静态博客的要多。
你具体需不需要插件提供功能?
不要以为静态博客就没有比动态博客更小的可拓展性。或者说,动态博客的很多在静态博客上不存在的缺陷是用插件来抹平的。
以我朋友的朋友的博客为例,他启用了:
- Akismet 反垃圾评论
- Bing Webmaster Url Submission
- easy2hide
- Login using WordPress Users
- mk-sitemap
- Password Protect WordPress Lite
- Really Simple SSL
- Redis Object Cache
- Sync QCloud COS
- TablePress
- ThirstyAffiliates
- TotalPoll – Pro
- Wordfence 安全
- WordPress Hide Posts
- WP Featherlight
- WP Githuber MD
- WP Open Social
- WP Sitemap Page
- WP Statistics
- WP-China-Yes
- 你好多莉
- 健康检查和故障排除
- 失效链接检查器
- 简易目录
我们可以明显看出,其启用的插件太多了,多到庞杂且功能大多重复了。而且,部分插件启用得没有道理,很难说得上“必要”,就纯粹是来消耗服务器性能的。
你甚至可以把以上插件总结成以下几类:
- 登录保护类
- 评论及评论管理类
- 数据库性能增强类
- 站点优化类
- SEO
- 统计类
- 其它
但是,静态博客:
- 对于登录保护,登录保护是由操作系统提供的。只要整个web server没问题,静态站点通常是最安全的。
- 评论和评论管理是通过第三方服务实现的,如GitHub、Disquz之类。
- 没有也不需要数据库。
- 通常Nginx+FastCGI足够满足大多数的缓存需求。静态站点生成器也通常会帮你做好优化,包括SEO优化。
- 统计通常也是嵌入到网站中的,由第三方服务实现,例如Umami。
你可以明显发现,在静态博客中,功能要么是被第三方平台实现了,要么是被操作系统实现了,整体的切面相比动态博客更小,且更易于维护。
静态博客还有什么好处?
迁移。
是的,服务商犯病这个是必须考虑的。
通常,WordPress迁移是需要数据库备份+整个站点打包带走的。你需要先走一遍WordPress的安装流程和数据库初始化流程,再解压备份的站点,同时把数据库里的东西填上。
而静态博客,你只需要打包带走你的站点,然后到地方解压,配置好web server就好。
而且,如果你没钱续服务器,静态站点还能走云原生架构(SaaS),托管到诸如GitHub Pages之类的服务,就完全OK了。而WordPress在此就极其受限了。
如果你想组一个集群,WordPress的实现要难很多,而且极其复杂,或者还是一样复杂(还有英文原版的文档,甚至官方还有个只能用于学习的场景的方案)。而对于静态博客来说,打包成Docker或什么其它容器的镜像,走Kubernetes/Minikube部署集群,特别简单,特别云原生,特别不需要你太过关注。
实际?
实际操作中,不是所有人都会Markdown语法,也不是所有人都懂嵌入/会写代码,而且大概率是会存在草稿这一中间的“私密”发布的文章的状态的,而且可能会依赖一些奇奇怪怪的基于WordPress的功能实现,这就造成了一个小问题:很多人离开WordPress等简单易用的编辑器或是什么后就不会写文章、维护自己站点了。而人们对此的方案是:前后端分离。
是的,简单说就是由WordPress作为后端,并通过REST API向前端传送信息。前端和WordPress无关且独立维护。虽然它还不是所谓的静态,但是已经足够云原生了(只需要数据库同步和前端容器化就可以实现集群部署了,而且集群被入侵不代表能摸到真正的后端,具体方案我觉得可以看一下隔壁GZ::CTF的实现,虽然不是一码事,但是还是可以参考一下的)。
当然还有一个比较魔的做法,就是转换器。通过WordPress至其它框架的转换器可以实现在WordPress上写作、在Hexo等上发布的功能。这就不在本文的讨论范围内了,毕竟我没干过,更没见过,但是隔壁MBRjun真有这么干过(只不过是Typecho到Hexo,而且是单向的,一次迁移就完全抛弃Typecho了)。
发表回复