$ .ajax缓存真实持续时间

时间:2013-03-07 10:25:51

标签: javascript ajax caching twitter

我正在尝试使用$.ajax和Twitter的搜索功能获取推文列表(在这种情况下为25个带有特定主题标签)。

我有两件事情有点不清楚:

  1. cache: true的持续时间有多长(直到它发送新请求而不是使用缓存需要多长时间)?目前它似乎每隔几秒钟,但我想知道确切的持续时间以及是否/如何改变它。

  2. 这将从Twitter中检索信息将由大约2000-3000人在随机时刻完成,但可能不会由同一个人在一段时间之后完成。 twitter会如何响应这个(阻止IP地址,因为可能有太多请求)?这就是为什么我要将信息缓存大约1-5分钟,以减少请求数量。

  3. TL; DR:我正在向twitter搜索功能提出大量请求,如何减轻负载?

1 个答案:

答案 0 :(得分:1)

$.ajax的缓存时间很可能取决于浏览器,因此您不应该依赖此来平衡您的负载与Twitter API。可以通过将{ cache: false }传递给settings参数来关闭此缓存。相反,你应该实现自己的缓存系统。

Twitter有一个页面描述:https://dev.twitter.com/docs/rate-limiting

它表示会发送一些标题来告诉您在特定时间内剩余的请求数量。你需要做的就是缓存足够长的时间,这样你就不会超过Twitter对你施加的限制。您应该进行一些测试,以了解服务上的不同负载将如何影响对Twitter API的调用总数并相应地设计您的缓存系统。这里最优化的解决方案可能是从a到b'o-clock我将需要缓存c分钟,从d到e'o-clock我将需要缓存f分钟。另一种解决方案可能是实现一个系统,以便在发生时跟踪负载并实时确定缓存时间。如果这两个解决方案都令人望而生畏,那么只需选择足够长的缓存时间就可以逃脱,这样你就永远不会超过限制。