我正在构建一个需要经常检查用户数据的Twitter应用程序,但是我遇到了一个在Twitter方面奇怪的缓存问题,而不是我的。
请尝试以下用户:
XML中的 users/show
:http://twitter.com/users/show.xml?screen_name=technolocus
users/show
: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或我国家的缓存。只有一个结论 - 推特正在缓解回应。
天哪,我怎么绕过这个?!?
忘记提及:服务器上的脚本是PHP,并使用cURL从Twitter检索XML和JSON数据,而本地测试只是使用浏览器。两者都有完全相同的结果!
答案 0 :(得分:0)
首先,我认为您应该向Twitter报告这个错误。我看到了与你相同的差异,无论这看起来像什么错误。即使他们正在缓存,我也希望他们这边的缓存会存储一个抽象形式,然后将其呈现为HTML,JSON和XML。我想知道实际发生的是这些请求是在执行类似但不同的查询。
您确定这些值是“旧的”吗?例如,你最近是否真的删除了大约50个更新(因为你说HTML一个是最新的,但显示的计数低于其他两个)?如果您创建另一个更新,您是否看到HTML编号增量而其他数字保持不变,或者它们是否同时增加?
答案 1 :(得分:0)
如果你所说的是准确的,而且通常情况下,你可能无法绕过它。 Twitter希望缓存其响应,因为每次重现都很昂贵。
当您使用Twitter的API时,您最终会被其约定约束,即使这包括缓存。
你最好的选择是发推特给@twitterapi并让他们回答为什么这两个表示是分歧的。
答案 2 :(得分:0)
将?blah = xxxx添加到所有网址。
我没有针对twitter和ocassionaly开发任何东西,在我的浏览器中手动“跟随”三条推文。他们总是落后半天。我补充?asdsadsadsad到URL(每次不同的东西),它总是更新。我不知道Twitter在这里做了什么,并在搜索问题时来到这里。但是我猜这个通过GET向URL添加随机值的技巧也可能适用于你的api请求。