WebFeed 倡议书

2022-04-20 ⏳3.3分钟(1.3千字) g

为了推动开放 Web 生态的发展,我设计并开发了 WebFeed 扩展。使用 WebFeed,用户可以在浏览器中方便地订阅独立博客,从而获取类似微信公众号的体验。但目前基于 WebFeed (RSS/Atom) 的订阅方案还有不少问题。今天向广大作者发出倡议,希望能一起解决这些问题。

第一个问题是如何方便读者快速订阅博客。

我们虽然可以在博客上指明 Feed 链接,但不同博客的链接位置却不尽相同,多数在页面的右上角,少数在页面底部,还有一些在左边或者右边。有的网站虽然提供 Feed 链接,却只在首页等特殊页面展示。如果用户只是阅读某篇特定的文章,则不能第一时间发现 Feed 链接。

为了解决这个问题,我建议所有作者都为博客加入 rss-autodiscovery 支持。简单来说就是在每个页面的<head>部分都添加特殊的<link>标签:

<link rel="alternate"
      type="application/atom+xml"
      title="RSS"
      href="https://taoshu.in/feed.xml">

这里的type属性指明 Feed 类型。如果是 RSS 需要写成application/rss+xml,Atom 则需要写成application/atom+xml。

有了这样标准化的<link>标签,我们才有可能实现自动发现、一键订阅等功能。

第二个问题是怎样选择合适的 Feed 类型。

我们知道 Feed 分 RSS 和 Atom。虽然 RSS 历史更久远,兼容性更好,我还是建议大家选用 Atom 格式。这是因为在 RSS 规范里面,每一个<item>只有一个<description>字段。有的站长用它输出摘要,有的站长用它输出全文。局面比较混乱。而 Atom 规范则分别定义了<summary>和<content>,在语义上更加清晰,客户端在解析的时候也更加简单。

第三个问题是 Feed 文件体积过大。很多作者为了方便读者订阅,不但在 Feed 中输出了全文,而且还把所有的历史文章都加到了 Feed 中。这样会生成一个非常大的 XML 文件。Feed 文件体积过大,一方面会消耗不必要的服务器流量,导致下载时间过长,另一方面还会给客户端解析带来非常大的负担。更重要的是,我们不可能在短时间内写很多文章,所以用户订阅 Feed 的时候大多数情况下下载的 XML 文件内容都只有很少变化或者根本没有变化。

为此,我建议各位作者把 Feed 当成一种更新同步机制,而非内容同步机制。也就是说,大家只需要把最新发布的内容输出到 Feed 中就可以了。比如,我们可以只针对最新的十篇文章生成 Feed 文件。读者只需按照一定的周期来检查是否有新的 Feed 就不会错过新发布的文章。为了进一步减少 Feed 文件的体积,我进一步呼吁大家只在 Feed 中输出文章摘要。如果读者有兴趣,则可以作者的博客上继续阅读。

顺便提一个小细节。有的作者为了让读者回源站阅读全文,不但没有在 Feed 中输出全文,而且在输出的摘要的最后还附加了一个超链接,来引导读者跳转到自己的博客。其实这大可不必。因为 Feed 信息中已经包含了文章链接,阅读器一般也都会再显示一个阅读原文按钮。如果在文章摘要中再输出一个,那就会显示两个原文跳转链接,非常难看。

第四个问题是文章顺序不统一。我见过有些 Feed 是按照发布时间升序排列的。每次打开看到的都是最早的文章。还有站长把某些页面置顶,每次打开都是那个页面。在此我建议大家统一按照文章发布时间降序排列。这样读者每次都能看到最新发布的文章。

第五个问题是 Feed 信息不完善。这个问题基本不影响用户订阅 Feed。但我还是建议作者能把网站标题、网站图标、主页链接、个人邮箱等信息加现 Feed 文件。

第六个问题是统一内容编码。建议大家统一使用 UTF-8 编码。

以上就是我所想到的 Feed 订阅问题。总结一个就是使用 Atom 格式,加入自动发现的<link>标签,只输出最新几篇文章的摘要,完善站点信息,比如一使用UTF-8编码。欢迎大家留言讨论。也欢迎大家关注 WebFeed 项目。