2009-07-11 9 views
0

私はユーザーデータを幾分頻繁にチェックする必要があるTwitterアプリケーションを構築していますが、私は奇妙なことにTwitterの側ではなく私のキャッシュで問題に直面しています。 XMLでTwitter APIのキャッシュ問題を回避するにはどうすればよいですか?

users/show:JSONでhttp://twitter.com/users/show.xml?screen_name=technolocus

users/showhttp://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を実行しました。それはdreamhostではありませんでした。私はそれがおそらく私のISPだと思っていました(彼らはNetAppなどを使っていると思います)。それから私はインドの別の場所にいる友人にそれを試してもらいました。彼は私と同じキャッシュレスポンスを得ています。

Dreamhostのキャッシュではありません。私のISPや私の国のキャッシュではありません。結論は1つだけです - Twitterはキャッシュレスポンスです。

どのように天国でこれを回避できますか?

これは忘れてしまいました:サーバー上のスクリプトはPHPであり、ローカルテストではブラウザを使用していたのに対し、cURLを使用してTwitterからXMLおよびJSONデータを取得しています。両方ともまったく同じ結果になります!

+0

サーバは、このデータを取得するためにcURLを使用してPHPスクリプトを実行していますが、ローカル試行はブラウザで行われています。 URLにアクセスしましたか?あなたは何を得ているのか教えていただけますか? – aalaap

+0

これはTwitterがそれについて何かしない限り得られないと思いますので、TwitterのGet Satisfactionフォーラムに投稿しました:http://getsatisfaction.com/twitter/topics/why_do_the_xml_json_and_direct_methods_of_accessing_a_users_profile_return_different_mostly_stale_data – aalaap

+0

すべてのXML、JSON、およびWebのstatuses_count値が、現時点では同じ値(9196)を返すことに注意してください。 – aalaap

答えて

0

まず、Twitterにこれを報告してください。私はあなたと同じ不一致を、それがバグのように見えるものに関係なく見ます。彼らがキャッシュしているとしても、彼らの側のキャッシュは、HTML、JSON、およびXMLにレンダリングされる抽象的なフォームを格納することを期待しています。実際に何が起こっているのかは、これらのリクエストが類似しているが異なるクエリを実行しているのだろうかと思います。

値は「古い」ですか?たとえば、あなたは実際には約50の更新を最近削除しましたか?(HTMLは最新ですが、他の2つよりもカウント数が少ないと言いますから)別の更新を作成すると、HTML番号の増分が表示されますが、他の数字は同じままであるか、それらはすべて同時に増加しますか?

+0

はい、値は古いです。私が老と言うとき、私は現在ではないという意味です。はい、これは、私はこのアプリのために回っているサンプルアカウントです。キャッシュのクリアをチェックするために約3〜4回のランダムなアップデートを削除しましたが、それはしません。 これはおそらくバグですが、ここで明らかになったキャッシュ無効化技術がないことを確認したかったのです。 ああ、btw、&cachespoiler = はどちらも動作しません。 – aalaap

0

あなたが言っていることが正確であれば、おそらくそれを回避することはできません。 Twitterは毎回の再生にコストがかかるので、その応答をキャッシュしたいと考えています。

TwitterのAPIを使用すると、キャッシュが含まれていても、その規約に縛られることになります。

あなたの最善の策は、@ twitterapiにツイートして、2つの表現が異なる理由についての回答を得ることです。

+0

私は応答をキャッシュする必要性を理解していますが、3つの異なる値を返す3つの異なるメソッドはちょっとばかげています!ええ、私はこのためにTwitterに連絡しなければならないでしょう。 – aalaap

0

すべてのURLに?blah = xxxxを追加します。

私はtwitterとocassionalyに対して何も開発せず、私のブラウザで3つのつぶやきを手作業で "follow"します。彼らは常に半日遅れる。私は?asdsadsadsadをURLに追加します(毎回違う)、常に更新されます。私はここでTwitterが何をしているのか分かりませんし、問題を探しているときにここに来ました。しかし、GETを使ってURLにランダムな値を追加するというこのトリックは、おそらくあなたのapiリクエストに対しても機能するでしょう。

関連する問題