2007年05月2日

RSS需要更进一步

作者 非鱼

RSS这个概念几乎是跟着博客一起被炒热了起来,最直观的感觉,就是在所有的博客、新闻,甚至论坛上都会出现一个RSS图标,至于这个图标是做什么用的,恐怕大多数人并不会去关心。

目前有很多RSS在线的离线的阅读器都已经相当普及,也很受大家喜爱,但是目前来看,RSS还仅仅是实现了一个抓网站内容的功能,这个功能,在早年没有RSS的时候,也曾经有人写出自动抓取页面或者自动监视网站变更的工具,只不过操作起来有点麻烦而已。而目前的RSS,似乎仍然只是做到了更方便自己的内容被人抓取而已。用户只在把这个RSS地址放到阅读器里,就可以及时的看到网站最新的文章(有的只有标题,有的包含摘要,有的直接看全文),比较起来,的确是方便了很多。

但是,从根本上来讲,这个技术还没有什么突破和创新。许多年前微软就试图让自己的内容通过推送的方式到达用户的桌面,到今天,这个技术仍然没有实现。所有的离线阅读器,都不得不通过定时查询的方式来读取这个RSS地址,而这个RSS的服务器端只是简单的返回最新的10条(或者更多)文章,客户端工具通过文章的链接判断该文章是否已经抓到过了,如果已经显示过,就忽略掉。这样有什么问题呢?如果你收藏了300个RSS地址(可能一般人不会这么多,但是现在所有的离线阅读器默认带的地址也不少于这个数),如果你设定为每隔1小时读取一次,那么其中90%的博客其实每天只更新一篇文章,或者每三五天才更新一篇文章,但是你却要每小时读取一次它的最新10篇文章,于是,你浪费了99%的CPU/带宽资源。但是如果你设定的时间太长,对于新闻网站又不合适,它们可能每小时就更新个几十篇文章,那么你就很可能错过可能感兴趣的东西。

要解决这个问题,又要回到微软那个推送的主意上。目前,只有QQ最接近这个目标了。(QQ会定期的弹出新闻和系统公告,但是由于每天发送量极少,而且不同的用户收到信息的时间也不一致,因此仅从外表我无法判断它是服务器主动推新闻的还是客户端定期去取新闻的。有知道的朋友请告知一下。)理想的状态是,如果我订阅了这个博客,那么作者每更新一篇文章,我的客户端就立刻弹出一条消息,通知我这个博客更新了,可能同时还可以显示出文章的标题/摘要或者全文。对于新闻网站也是一样,每条新闻一更新,我就可以立刻得到消息。这样我就不会错过任何一个精彩瞬间,而且不需要让自己的机器频繁的去取服务器数据,即浪费客户端资源,也浪费服务器端资源。

既然有这样的需求,为什么没有网站这样做呢?因为做不到。

如果想让客户端能够收到消息,它就必须开一个端口,可以接收数据包,就像QQ那样。这个要实现其实也不难,但是如果每一家都做一个自己的这种软件,监听一个不一样的端口,那么客户想要订阅几十个网站,难道要安装几十个不同的软件,这显然是不现实的。另外,每一个提供订阅功能的网站都要实现一套记录订阅用户的IP/端口,并且能够给他们发送数据的程序,这也是不可能的。

那么,是不是就没有办法了呢?

只要你能想到,没有什么解决不了的,特别是互联网的技术方面的问题,不是吗?

假如,有这样一家公司,专注于提供实时的新闻/博客订阅,他出一个客户端,只要你安装了,就可以实时的得到自己订阅的最新内容,我想你还是愿意安装的吧?然后公司出一个通用的呼叫接口,给所有产生内容的网站来使用,类似百度现在的发布协议。新闻网站只要在发布新闻的时候调用一下这个接口(只需要一个链接就可以),通知他新文章的内容就可以了,剩下的事情就交给他去解决。这边收到呼叫之后取得新文章的信息,然后查寻所有订阅了该类别的用户,找出所有在线的用户,广播一个UDP数据包出去,于是,所有的用户都立刻得到了这篇新文章的通知。

多么美好啊!可惜目前还没有人去做这件事。如果有人给我足够的资源,一定能够实现它。