我正在制作一个基本的Sinatra应用程序,以使用Twitter gem显示用户的Twitter提及时间轴。登录后,我提取他/她的提及。类似的东西:
get '/' do
@mentions = Twitter.mentions_timeline
erb :home
end
这个问题是我每次用户点击主页时都会调用Twitter API。由于我只想重新获取提及时间线,比如每3分钟一次,我的速度有限,而且效率也不高。或者如果它更简单,我可以在达到速率限制后使用缓存。
在阅读之后,似乎最好的方法是将这些数据存储在缓存中,这样我就不会继续发出API请求了。我该怎么做呢?
答案 0 :(得分:3)
我是通过将推文存储在redis中来实现的。我在辅助函数中加载推文,以便我可以在多个路由中访问相同的缓存副本。
我的所有代码都在https://github.com/timmillwood/millwoodonline/blob/master/helpers/main.rb#L38,随时可以随心所欲。
答案 1 :(得分:1)
显而易见的方法是将用户的时间轴存储在数据库中。使用像MongoDB这样的东西是非常简单的,因为Twitter API会返回json,你可以随时将推文扔到那里。在调用Twitter API之前,请检查最近提及用户的年龄,如果相对较新(例如30分钟或更短时间),请不要致电。