在去年写这个网站的时候就有想过加上 RSS 订阅,但是当时这个功能的优先级比较低,加上基本没想过有人会关注自己的博客,这件事就一直搁置了。


最初想起来这件事是一个月前看到一位小伙伴的文章 朋友圈,于是想着等不忙的时候去鼓捣一下 RSS。

终于想起来要加 RSS 了
终于想起来要加 RSS 了

结果由于最近工作比较忙没法上班写,周末也总是因为各种事情没法好好坐下来写代码,就又给忘记了。


后来我发的风信子那篇文章收到了一位小伙伴的留言,其中又提到了 RSS 订阅,才让我又想起来这件事情。正好那一周的周末两天有时间坐下来敲代码,于是周六下午就直接开始(算是从零开始,以前没有仔细了解过 RSS 是什么)鼓捣 RSS。


整个过程的话,一张谷歌浏览器的历史记录应该就可以看出来我以前对 RSS 的认知是多么欠缺哈哈哈(图片太长我给折叠起来了)。


图片有点长,点我查看

一天“精通” RSS
一天“精通” RSS


从历史记录里可以看出来,大致上分为下面几步:

  1. 最开始是想自己写代码来生成 RSS 文件,然后去 github 看了很多相关的实现代码
  2. 自己其实都没用过 RSS,于是又搜了一些 RSS 阅读器,准备先自己体验一下 RSS,看下 RSS 到底是怎么个样子,也方便自己最后验证 RSS 文件内容的正确性
  3. 访问了几个印象中支持 RSS 订阅的博客,把他们的 RSS 文件下载下来对比了一下,发现大家各自的实现都不一样
  4. 于是自己开始搜 RSS 的规范,找到了 RSS ADVISORY BOARD 这个网站,看了很久关于 RSS 2.0 的文档,大致上了解了 RSS 文件大部分常用字段的含义以及哪些是必需字段
  5. 知道规范后于是就自己自己网上找了一段不依赖第三方库的纯 Java 实现生成 RSS 文件的代码来改造。 RSS 要求时间格式需要采用 RFC822 标准,于是又花了很多时间去了解这个标准以及如何将常用的 LocalDateTime 类型的时间格式化为满足 RSS 要求的时间格式
  6. 生成 RSS 文件后再用 rss-validator 校验,不断修改代码直至完全通过校验。
  7. 目前本网站的方案是每次发布新的文章、更新文章、删除文章都会调用生成 RSS 文件的代码重新生成一次新的 RSS 文件

今天将相关的代码(rss-generator)整理了一下,发布到了 github,有需要的朋友可以直接 clone 下来引入到自己项目中使用。