【问题标题】:How do I get around the Twitter API caching problem?如何解决 Twitter API 缓存问题?
【发布时间】:2011-02-21 15:28:05
【问题描述】:

我正在构建一个 Twitter 应用程序,它需要经常检查用户数据,但我遇到了一个奇怪的缓存问题,该缓存奇怪地在 Twitter 这边,而不是我的。

试试下面的用户:

users/show 在 XML 中:http://twitter.com/users/show.xml?screen_name=technolocus

users/show 在 JSON 中:http://twitter.com/users/show.json?screen_name=technolocus

普通页面:http://twitter.com/technolocus

所有这些访问数据的方法都应该返回相同的值,对吧?检查每个人的statuses_count

XML:12548

JSON:12513

正常:12498

普通方法(即仅以非编程方式访问个人资料)提供最正确的值 12498。如果我向此帐户发布或删除推文,它会立即在个人资料页面上更新,但 XML 和 JSON 方法仍然返回缓存数据。

此时,XML 和 JSON 方法的值分别为 12 到 18 小时。

我首先尝试从我的网站(托管在 Dreamhost 上)访问这些方法。我以为是 Dreamhost 缓存了响应。然后我尝试直接从浏览器访问 API。在那之后,我从我的机器的命令行中做了一个cURL。这不是梦想家。我认为这可能是我的 ISP(我认为他们使用 NetApp 或类似的东西)。然后我请了印度另一个角落的朋友尝试一下。他得到的缓存响应与我完全相同。

所以它不是 Dreamhost 的缓存;这不是我的 ISP 或我所在国家的缓存。只有一个结论 - Twitter 正在缓存响应。

我怎么能解决这个问题?!?

忘了提这个:服务器上的脚本是 PHP 的,使用 cURL 从 Twitter 检索 XML 和 JSON 数据,而本地测试只是使用浏览器。两者的结果完全相同!

【问题讨论】:

  • 服务器正在使用 cURL 运行 PHP 脚本来获取此数据,而本地尝试使用浏览器。你访问过网址吗?你能告诉我你得到了什么价值吗?
  • 我想除非 Twitter 对此有所作为,否则无法解决此问题,因此我已将其发布在 Twitter 的 Get Satisfaction 论坛中:getsatisfaction.com/twitter/topics/…
  • 更新此内容是为了让您知道所有 XML、JSON 以及 Web 的 statuses_count 值现在返回相同的值 - 此时为 9196。

标签: caching twitter


【解决方案1】:

首先,我认为您应该向 Twitter 报告此错误。我看到了和你一样的差异,不管这看起来像是一个错误。即使他们正在缓存,我希望他们这边的缓存会存储一个抽象表单,然后将其呈现为 HTML、JSON 和 XML。我想知道实际情况是否是这些请求正在执行相似但不同的查询。

您确定这些值是“旧的”吗?例如,您最近是否真的删除了大约 50 个更新(因为您说 HTML 更新是最新的,但显示的数量低于其他两个)?如果您创建另一个更新,您是否会看到 HTML 编号增加而其他数字保持不变,还是它们都同时增加?

【讨论】:

  • 是的,这些值是旧的。当我说旧时,我的意思是不是当前的。是的,这是我为这个应用程序搞乱的一个示例帐户。我随机删除了大约三到四次的更新以检查缓存是否被清除,但事实并非如此。这可能是一个错误,但我想确保我没有在这里遗漏一些明显的缓存清除技术。哦,顺便说一句,&cachespoiler= 也不起作用。
【解决方案2】:

如果你说的是准确的,而且很可能是,一般来说,你无法绕过它。 Twitter 想要缓存它的响应,因为每次重现它们的成本很高。

当您使用 Twitter 的 API 时,您最终会受到其约定的约束,即使其中包括缓存。

最好的办法是向@twitterapi 发推文,让他们回复你为什么这两种表示形式不同。

【讨论】:

  • 我理解缓存响应的必要性,但是三种不同的方法返回三个不同的值实在是太荒谬了!是的,我将不得不为此联系 Twitter。
【解决方案3】:

将 ?blah=xxxx 添加到所有网址。

我没有开发任何针对 twitter 的东西,偶尔会在浏览器中手动“关注”三条推文。他们总是落后半天。我将 ?asdsadsadsad 添加到 url(每次都不同)并且它总是更新。我不知道 Twitter 在这里做什么,并在搜索问题时来到这里。但我想这个通过 GET 将随机值附加到 url 的技巧可能也适用于您的 api 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多