0

Twitter gemを使用して、ユーザーのTwitterメンションのタイムラインを表示する基本的なSinatraアプリケーションを作成しています。ログイン後、彼/彼女の言及を取得します。何かのようなもの:

get '/' do
  @mentions = Twitter.mentions_timeline

  erb :home
end

これに関する問題は、ユーザーがホームページにアクセスするたびにTwitterAPIを呼び出すことです。レート制限があり、効率的でもありません。たとえば、3分ごとにメンションのタイムラインを再取得したいだけだからです。または、もっと簡単な場合は、レート制限に達したらキャッシュを使用できます。

読んだ後、これを行うための最良の方法は、このデータをキャッシュに保存することであるように思われるので、APIリクエストを作成し続けることはありません。どうすればいいですか?

4

2 に答える 2

3

これを行うには、ツイートをredisに保存します。複数のルートで同じキャッシュコピーにアクセスできるように、ヘルパー関数にツイートを読み込んでいます。

私のコードはすべてhttps://github.com/timmillwood/millwoodonline/blob/master/helpers/main.rb#L38にあります。必要なものを自由に使用してください。

于 2012-12-11T09:19:06.090 に答える
1

明らかな方法は、ユーザーのタイムラインをデータベースに保存することです。Twitter APIはjsonを返し、ツイートが来たらそこに投げ込むことができるので、MongoDBのようなものを使用するのは非常に簡単です。Twitter APIを呼び出す前に、ユーザーの最新の言及の年齢を確認し、比較的新しい場合(30分以下など)は呼び出さないでください。

于 2012-12-11T02:24:55.757 に答える