RSS 阅读器如何知道提要已更新?

Posted

技术标签:

【中文标题】RSS 阅读器如何知道提要已更新?【英文标题】:How does RSS reader know that a feed is updated? 【发布时间】:2010-12-30 19:59:22 【问题描述】:

刚刚通过 youtube 了解这一点,但无法找到关于读者如何知道有更新的问题的答案。

它就像黑莓中的 Push 一样吗?

【问题讨论】:

【参考方案1】:

这是一个拉。这就是为什么您必须配置您的阅读器刷新提要的频率。

【讨论】:

【参考方案2】:

RSS 是一种拉式技术。读者不时地重新获取 RSS 提要(例如每小时两次,或者如果读者知道这是一个经常更新的提要,则更频繁)。

Feed 通过常规 HTTP 提供,由一个简单的 XML 文件组成。

【讨论】:

问题是读者怎么知道有更新?它是否连续读取相同的提要?它怎么知道有更新而不重新加载已经看到的内容? 它不知道。读者只需不断检查它并与缓存(以前的内容或以前的时间戳)进行比较,以确定 rss 提要是否已更新。【参考方案3】:

它只是定期检查提要的更新。

最近有一个名为pubsubhubbub 的新协议可以将提要推送到侦听器。但这需要出版商的支持。

Here是支持实时RSS推送的网络服务列表,包括Google Reader、Blogger、FeedBurner、FriendFeed、MySpace等。

【讨论】:

【参考方案4】:

RSS 是一种文件格式source,实际上并不知道它从何处获取条目。答案确实是:“http 请求如何仅从服务器获取最新结果”,答案是 Conditional GET source。 Http 还支持Conditional PUT

This is an article关于使用http的这个特性专门支持rss黑客。

【讨论】:

太棒了。那篇文章让我找到了我一直在寻找的 RSS 术语:“Conditional GET”。这个术语让我在 Python 文档中找到了我正在寻找的 feedparser 的内容。再次感谢!每个人都应该为此答案 +1! 很高兴能帮上忙,如果它满足学习要求,请接受答案。如果您认为此处应包含更多所需的详细信息,也请提出修改建议。【参考方案5】:

让我们总结一下:

通常,客户端通过轮询知道 RSS 提要已更新,即常规拉取(提要 URL 上的 HTTP GET 请求) 网络上不存在推送,至少在html5 websocket 修复之前不支持 HTTP。 但是,Wordpress、Google 等一些博客框架现在支持pubsubhubbub 约定。在这种模式下,您将“订阅”RSS 流的更新。 “中心”将调用您网站上的 URL(回调 URL)向您发送更新:这是一个推送。

推送或拉取,在这两种情况下,您仍然需要编写一些代码来更新您的网站、数据库或您存储/显示它的任何位置上的 RSS 列表。

而且,作为一个附带问题,没有必要在每次拉取时都请求整个 XML 来查看内容是否发生了变化:使用不链接到 RSS 的标准,但对整个 HTTP 协议是全局的 (@987654323 @),您可以知道 RSS 页面是否在给定日期之后被修改,并且只有在修改后才能获取整个 XML。

【讨论】:

以上是关于RSS 阅读器如何知道提要已更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作“空”的 RSS 提要

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

jQuery获取RSS提要实时阅读器

大型 RSS 阅读器的工作原理(netvibes、Google 阅读器...)

使用 C# 在 .net 中阅读 rss 提要的最佳方式 [关闭]

如何在 2015 年 4 月 20 日之后获取 Youtube 频道 RSS 提要(没有 v3 API)?