0

我正在制作一个基本的 Sinatra 应用程序,以使用Twitter gem显示用户的 Twitter 提及时间线。登录后,我获取他/她的提及。就像是:

get '/' do
  @mentions = Twitter.mentions_timeline

  erb :home
end

问题在于,每次用户点击主页时,我都会调用 Twitter API。我的速率受到限制,而且效率也不高,因为我只想重新获取提及时间线,比如每 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

显而易见的方法是将用户的时间线存储在数据库中。使用 MongoDB 之类的东西非常简单,因为 Twitter API 返回 json,你可以在推文到来时将它们扔到那里。在调用 Twitter API 之前,检查最近提及用户的年龄,如果它相对较新(例如 30 分钟或更短),则不要调用。

于 2012-12-11T02:24:55.757 回答