题
我有一个应用程序可以轮询网络上的多个 RSS 源。
轮询其他网络服务器时的礼仪是什么?多久进行一次轮询等?
最佳实践是什么?
解决方案
利用 HTTP 缓存。发送
Etag
和LastModified
标头。认出304 Not modified
回复。这样您可以节省大量带宽。此外,一些脚本可以识别LastModified
标头并仅返回部分内容(即只有两到三个最新项目,而不是全部 30 个左右)。不要从支持的服务轮询 RSS RPC 平 (或其他 PUSH 服务,例如 PubSubHubbub)。IE。如果您从服务接收推送通知,则不必在标准间隔内轮询数据 - 每天轮询一次以检查该机制是否仍然有效(ping 可能被禁用、重新配置、损坏等) )。这样,您只能在收到通知时获取 RSS,而不是每小时左右获取 RSS。
检查 TTL(在 RSS 中)或缓存控制标头(
Expires
在 ATOM 中),并且在资源过期之前不获取。尝试适应每个 RSS 提要中新项目的频率。如果在过去一周内特定提要只有两次更新,则每天不要多次获取它。AFAIR Google Reader 就是这么做的。
在夜间或网站流量较低的其他时间降低费率。
最后,每小时做一次。;)
其他提示
谷歌的Feedfetcher声称它轮询RSS订阅高于每小时一次略显不足。
自: http://code.google.com/apis/ajaxfeeds/documentation/
饲料抓取频率
作为谷歌AJAX订阅API使用Feedfetcher的,进料数据从AJAX订阅API可能不总是最新的。该谷歌饲料爬虫(“Feedfetcher会”)检索比每小时一次少从大多数网站供稿。一些经常更新的网站可能会更频繁地刷新。
嗯,我要去那里,忽略了说:“谷歌说,我们做的”,并说帖子:经常你现实需要
RSS有没有让你最新的。如果饲料发布10项小时但只显示五个,你会错过这些项目的五进不服务宗旨。你还不如不打它。
当然,你不能敲击服务器请求,但如果他们发布足以让你请求一分钟一次,我看不出它是如何不合理的匹配率。
一小时一次,如果你想仅仅通过规则的拇指去(但链接解释了一些更好的选择)。
在一个小时是我听到的频率。
RSS中有一个TTL设置,以便真正当TTL过期后只能查询。
但我想,如果他们不把一个在它自己的问题,您应查询类似每小时一次
我注意到,Twitter使用(自定义)X-RateLimit-Remaining
和X-RateLimit-Limit
报头(在HTTP响应),以指示授权轮询的最大数目为Atom提要。这在某种程度上遗憾的是他们没有使用标准Expires
场(这是在过去的集合30岁:P)(。第13.2 *)我猜他们Cache-Control: no-cache
的广告也排除了在RFC 2616中定义的一般heursitic到期时间。这更遗憾的是,凌动似乎没有提供任何标准化的方式来告诉建议多久一个轮询饲料。