检测 RSS 提要中的新项目

Posted

技术标签:

【中文标题】检测 RSS 提要中的新项目【英文标题】:Detecting new new items in a RSS feed 【发布时间】:2010-11-22 12:30:38 【问题描述】:

检测 Feed 何时更新的最佳方法是什么?假设我有一个应用程序每 15 分钟轮询一次提要。如何确定是否添加了新内容? 用于 RSS 和 Atom 提要。

【问题讨论】:

【参考方案1】:

RSS 2 和 Atom 中的每个项目都有一个可能被标记为唯一的 GUID/ID。如果它被标记为唯一,您可以使用它来识别项目并与之前的项目进行匹配。

【讨论】:

根据rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt,guid 是一个可选字段,因此它可能不会出现在某些 RSS 提要中!【参考方案2】:

在请求字段时检查 http 响应的 Last-Modified 和 ETag 字段。更好的是,在您的请求中使用 If-Modified-Since 和 If-None-Match 标签,如果提要没有被修改,您只会收到 304 响应。 (见:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

【讨论】:

是否所有网站提要都支持 etag?并且 etags 容易被 javascript 读取吗?【参考方案3】:

我在我的项目中使用 etags,在 servlet 过滤器中计算,如下所示 http://www.infoq.com/articles/etags

这适用于您的网络服务器上托管的 rss、atom 或任何其他资源。

【讨论】:

以上是关于检测 RSS 提要中的新项目的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 RSS 提要上的所有旧项目?

Wordpress 网站的 Mailchimp RSS 提要仅包含新项目,基于 FEEDITEM 的提要包含旧项目

RSS 提要未定义项目元素验证错误

获取一个RSS提要,用循环显示项目

从数据库创建 RSS 提要,将多少项放入提要以便它们都可能被消费?

获取前缀:来自 XML RSS 提要的项目值