我有一个应用程序可以轮询网络上的几个 rss 源。
轮询他人的 Web 服务器时的礼仪是什么。多久轮询一次等?
最佳实践是什么?
使用 HTTP 缓存。发送Etag
和LastModified
标题。识别304 Not modified
响应。这样可以节省大量带宽。此外,一些脚本识别LastModified
标题并仅返回部分内容(即仅返回两个或三个最新项目,而不是全部 30 个左右)。
不要从支持RPC Ping的服务(或其他 PUSH 服务,例如PubSubHubbub)轮询 RSS。即,如果您从服务接收 PUSH 通知,则不必在标准间隔内轮询数据 — 每天执行一次以检查机制是否仍然有效(ping 可以禁用、重新配置、损坏、 ETC)。这样您就可以仅在收到通知时获取 RSS,而不是每隔一小时左右。
检查 TTL(在 RSS 中)或缓存控制标头(Expires
在 ATOM 中),并且在资源过期之前不要获取。
尝试适应每个 RSS 提要中新项目的频率。如果在过去一周内只有两次特定提要的更新,请不要每天获取超过一次。AFAIR 谷歌阅读器就是这样做的。
在夜间或您网站上的流量较低的其他时间降低费率。
最后,每小时做一次。;)
Google 的 FeedFetcher 声称它每小时对 rss 提要进行轮询的次数略少于一次。
来自:http ://code.google.com/apis/ajaxfeeds/documentation/
饲料爬行频率
由于 Google AJAX Feed API 使用 Feedfetcher,因此来自 AJAX Feed API 的 Feed 数据可能并不总是最新的。Google 供稿抓取工具(“Feedfetcher”)每小时从大多数网站检索供稿的次数少于一次。一些经常更新的网站可能会更频繁地刷新。
好吧,我会去那里,忽略那些说“谷歌说,我们做”的帖子,并说:只要你实际需要。
RSS 可让您随时了解最新信息。如果某个 Feed 每小时发布 10 个项目,但只显示 5 个,那么您将错过其中的 5 个项目,并且该 Feed 无法发挥其作用。你可能根本不打它。
当然,您不能用请求敲击服务器,但如果它们发布的内容足以让您每分钟请求一次,我看不出匹配该速率是多么不合理。
每小时一次,如果您只想按照经验法则(但链接解释了一些更好的选择)。
每小时一次是我听到的频率。
Rss 中有一个 ttl 设置,所以实际上你应该只在 TTL 过期时进行轮询。
但我想如果他们不把一个问题放在他们的问题上,你应该每小时投票一次
我注意到 twitter 使用(自定义)X-RateLimit-Remaining
和X-RateLimit-Limit
标头(在 HTTP 响应中)来指示 Atom 提要的最大授权轮询数量。有点遗憾的是他们没有使用标准Expires
字段(这是在过去 30 年设置的:P)我猜他们的广告Cache-Control: no-cache
也排除了 RFC 2616(第 13.2.* 节)中定义的通用启发式过期时间。更遗憾的是,Atom 似乎没有提供任何标准化的方法来说明建议多久轮询一次提要。