关于 RSS 订阅的一点小折腾

起因:

最近闲来无事,寻思着给网站加个 RSS 订阅,顺便去几个导航站(博客聚合)提交一下收录。其实在这之前,我对 RSS 到底是个什么东西并没有太多概念,只知道它是某些网站角落里那个不太起眼的橙色小图标。既然网站从最初的个人笔记慢慢变成了支持多人的合集,总觉得该完善一下这些基础功能。

准备动手:

刚开始觉得这东西不难,无非就是用 Java 查一下数据库,拼接一段包含 <channel><item> 的 XML 代码。看着浏览器里打印出来的树状图,觉得大功告成了,就顺手把地址填到了提交页面上。

磕磕绊绊:

结果很快就被打回了原形,系统冷冷地提示:“RSS 地址不正确,抓取不到正确内容”。

我盯着屏幕发呆了挺久,把别人的 RSS 源和我的放在一起比对,看着似乎没什么区别,标签结构都是一样。后来耐着性子查了查资料,才发现这个有些年头的协议,对格式有着一种固执的严苛。

比如时间格式,我们平时写接口习惯直接输出 2026-05-20T10:28:28 这样的标准时间,但 RSS 的规范里只认 RFC 822 标准,非得是带有 +0800 时区标识的英文格式。

没办法,只能老老实实去改代码。为了兼容数据库里查出来的各种时间类型,特意抽离了一个方法把时间全部转成它认识的样子。顺便也在 XML 顶部补上了 W3C 规范要求的 <atom:link> 自身链接;考虑到以后社区文章变多,把用来做唯一标识的 <guid> 从单纯的数字 ID 换成了完整的文章链接,免得产生冲突;最后,还加上了一个 <lastBuildDate>,告诉外界网站最后一次更新是什么时候。

把这些细枝末节的东西都修补完,重新部署上线,又重新提交了一次申请。现在能做的,也就是等一个不知道会不会顺利通过的回复了。

结语:

写代码有时候也是这样,看着简单的东西,里面往往藏着很多不经意的细节。暂时不去想收录的结果如何,慢慢打磨、慢慢完善就好。就像写博客一样,不用急于求成,哪怕走得慢一点,只要这个站点还在一点点变好,回头看看,为了几行代码折腾的这半天时间,想必也是值得的吧。