我的网络应用包含从我无法控制的外部API收集的数据。我每小时限制大约20,000个API请求。我的数据库中有大约250,000个项目。这些项中的每一项本质上都是缓存版本。考虑到需要1个请求来更新1个项目的缓存。显然,在这些情况下,不可能拥有完美的最新缓存。那么,在制定缓存数据的策略时,我应该考虑哪些事项。这些是我想到的事情,但我希望有人有一些我没有想过的好主意。
更多细节:项目是照片。每张照片都属于一个活动。当前发生的事件更像是客户端查看(因此它们应该优先考虑)。虽然我现在只有250K项目在数据库中,但这个数字增长得相当快(不会很长,直到达到100万个标记,可能是5个月)。
答案 0 :(得分:5)
http://instagram.com/developer/realtime/会有用吗?当有新的(可能更新的)图像供您查看时,Instagram似乎愿意POST到您的服务器。那会诀窍吗?
否则,我认为你的问题听起来很像搜索引擎所遇到的问题 - 你看过Wikipedia on crawler selection criteria吗?您正在处理网页抓取工具所面临的许多问题:抓取内容,抓取频率以及如何避免向单个网站发出过多请求。您也可以查看open-source crawlers(在同一页面上)了解您可以学习的代码和算法。
无论如何,要抛弃一些关于爬行标准的想法:
答案 1 :(得分:1)
每小时在您的网站上查看了多少(唯一)照片/活动?那些未被查看的照片可能不需要经常更新。您是否在旧事件/手机的视图中看到任何模式?旧事件可能不那么流行,所以也许它们不必经常被检查。
andyg0808具有良好的详细信息,但在实际应用之前了解数据使用模式非常重要。
在某些时候,您会发现每小时20,000次API请求不足以更新经常查看的照片,这可能会引发您不同的问题。