【问题标题】:$.ajax cache true duration$.ajax 缓存真实持续时间
【发布时间】:2017-01-27 05:05:24
【问题描述】:

我正在尝试使用 $.ajax 和 twitter 的搜索功能获取推文列表(在本例中为 25 条带有特定主题标签)。

有两件事我有点不清楚:

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

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

TL;DR:我对 twitter 搜索功能提出了很多请求,如何减轻负载?

【问题讨论】:

    标签: javascript ajax caching twitter


    【解决方案1】:

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

    Twitter 有一个页面对此进行了描述:https://dev.twitter.com/docs/rate-limiting

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

    【讨论】:

    • 谢谢,这正是我在寻找关于第 2 点的内容:)。你碰巧知道 1 的答案吗?
    • 我也将我的答案编辑为第一个答案。如果您需要更详细的解释,我也可以提供 =)
    • 现在我必须缓存来自 AJAX 调用的 JSON 结果,但是网上有很多不同的方法,而且它们似乎都不支持缓存时间,所以我不知道如何处理这个.
    • 你必须更加特别。
    • 基本上:“距离上一个结果有 ? 分钟?如果是:从 twitter 获取结果。如果不是:从缓存中获取结果。”我想根据经过的时间从 twitter 或缓存中获取结果。
    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2022-01-14
    • 2011-01-28
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多