2011-03-15 57 views
6

我正在实施一个网站的RSS提要,我不明白有关该提要的XML文件格式/大小/内容的某些事情。RSS feed XML文件有多大?

我正在使用过去的数据初始化网站,这个数据可以追溯到1999年(现在没有任何时间点的Feed),每年只会添加几百个项目。

是否有一些存档协议,或者我可以只保留一个文件并继续附加到它?我认为这将是低效的,因为聚合器必须下载整个事情(我认为)。

那么,这通常是什么习惯?限于上个月?目前拥有超过900个项目的文件是1.5MB,我预计1年的价值约为大小的十分之一。

关于这个使用什么原则以及如何实现它的任何指针?我使用的是PHP,但是我的数据足够复杂了,我把自己的脚本编写成文件(并且验证得很好),所以我不能使用罐头解决方案 - 我需要理解我自己的实现脚本。

+1

你为了得到答案而执行了什么魔术? 3个月前对我来说会更有帮助! – 2011-06-08 23:28:20

+0

我曾经是一个聚合怪胎,问题是更多的架构比本质上的技术。我唯一没有提到的是确保通过http://validator.w3.org/feed/运行最终的Feed,这将为您和您的消费者节省很多心痛! – Oppositional 2011-06-08 23:41:45

+0

@david我编辑你的语法略有不冒犯用户,当你编辑问题的问题获得更高的排名和更多的知名度 – 2011-06-10 15:49:26

回答

5

大多数辛迪加饲料的消费者都期望饲料将包含相对较新的内容,并且以前发布的内容会脱离饲料。 Feed中维护的内容通常基于您发布的内容类型,但随着Feed大小的增长,它可能会影响Feed客户端检索和解析信息的能力。

如果你真的想发布一个不断加入历史饲料,但从来没有的内容项删除,你可能要考虑下列选项(根据你的消费者的需求):

  1. 实施Feed Paging and Archiving,per RFC 5005 Section 3,因为当条目数量非常大,无限或不确定时,分页提要可能很有用。客户端可以通过供稿“页面”,只需要访问供稿条目的子集。
  2. 从逻辑上将您的内容分成多个供稿,并将auto-discovery提供给您网站上的供稿。
  3. 实现基于REST的服务接口,该服务接口允许消费者以Atom或RSS格式提要检索和过滤您的内容,默认表示使用一些合理的默认值。

选项1是一种合理的方法只有当你知道饲料的客户,将消耗你的饲料,因为不是所有的饲料客户端支持分页的类型。

选项2是最常见的一种看到面向公众的网站,因为大多数浏览器和客户端支持自动发现,并可以同时提供一个完整的历史进和一个较小的更近的内容饲料(或段对您的内容有意义的方式)。

选项3潜在地允许您提供前两个选项的好处,此外您还可以提供多种提要格式和丰富的内容过滤功能。这是揭示Feed内容的一种非常强大的方式,但通常只有当您的消费者表示希望剪裁他们希望消费的Feed内容时才付出努力。

尽管大多数丰富的订阅源客户端将异步检索订阅源内容,但随着订阅源大小增加,为您的订阅源提出同步(可能频繁)请求的客户端可能会遇到超时问题。

无论您采取什么方向,都要考虑在您的Feed上实施Conditional GET;并了解您的联合内容的潜在消费者,以便选择最适合的策略。当您考虑要提供哪个联合供稿格式时,请参阅this answer

+0

我实际上最终将feed作为脚本实现,所以我可以提供多个子转接。我还在检索数据的SQL上放置了一个LIMIT。我最终意识到,提供全部的饲料对我而言只是一开始就很重要,但对于任何赞同它的人来说都可能并不重要。谢谢你的出色答案。我已经提交了几篇引文供进一步调查,特别是提供最新更新标题的问题。 – 2011-06-08 23:27:51

0

聚合器会重复下载文件,因此限制文件的大小非常重要。我会让该Feed包含10个项目,或者在一周之前拥有最旧的项目,以获取更多条目为准,除非用GET参数覆盖。当然,这会因您从客户看到的实际使用情况以及Feed中的活动而有所不同。