自从 2018 年有了小孩之后,基本上丢在一边,很少写博客。日志产量从日更到月更,从月更到年更,从年更到备份存档。刚弄博客才两三年的时候就一直有个信念,那就是不管以后是否继续写下去,但是博客一定保留下来、数据一定要备份好。毕竟这里面有自己傻逼的青春,令自己回忆的过往。

最近家里发生的大事,让我有了重新把博客捡起来继续记录的想法。不为别的,只是为了给自己多留下一些痕迹,也给日后想要了解我的人一个渠道。

早在 2019 年的时候,我就把博客所有的日志从 Typecho 转到了 Hexo,然后一直部署在 Github Pages。评论在多说之后也就再也没开放过,主要是找不到合适的评论服务,在本地尝试过 Valine、 Twikoo,因为无服务端的问题都选择放弃。这一次本来也是不打算折腾评论,只是发发日志就算了,但是又意外的了解到有服务端的 Waline,于是又开始折腾。

在折腾评论的时候,看到@公子哥发的《静态博客如何高性能插入评论》后,发现可以用Hexo的分页函数来生成出静态评论内容。

大致的方案如下:

  1. 创建一个生成评论文件的 Docker 服务
  2. 使用 GitHub Actions 创建一个用来 pull、生成、commit、push 的动作集
  3. 通过 Waline 的评论钩子(如postSavepostUpdatepostDelete)来触发 Github Actions 动作集
  4. 触发 Vercel 自动构建部署

实现以上的方案就可以做到静态博客拥有静态评论的体验,具体的实现方案之后抽空再写吧。当然,这种方式也会带来一些问题,主要就是评论没有那么快展示出来,提交后能看到的也只是一个临时的效果。不过目前测试,从提交(编辑、删除)到最终渲染出最新数据,最多也只是4分钟,对于我这种量级的评论来说足够了。

另外之后在和公子哥的讨论中,他建议可以直接使用 Waline 的Github数据存储方式,这种方式的话就可以节省1-3的步骤,每次有评论的动作,就会触发 Vercel 进行自动构建,有兴趣的可以尝试一下。