在Rails中缓慢的第三方API请求

时间:2014-04-16 13:10:16

标签: ruby-on-rails api ruby-on-rails-4 soundcloud instagram

我正在构建一个使用Soundcloud和Instagram宝石的单页Rails 4应用程序。我注意到有时这些API请求会降低我的应用程序速度。我不确定处理此类请求的最佳方法/做法是什么,以便它们不会对我的应用程序的性能产生负面影响?我查看了异步请求,sidekiq,并且还找到了这个示例:http://www.jonb.org/2013/01/25/async-rails.html

我的索引控制器如下所示:

require 'soundcloud'

class HomeController < ApplicationController

  def index
    # register a new client, which will exchange the username, password for an access_token
    soundcloud_client = Soundcloud.new(
        :client_id => ENV['SOUNDCLOUD_ID'],
        :client_secret => ENV['SOUNDCLOUD_SECRET'],
        :username => ENV['SOUNDCLOUD_USERNAME'],
        :password => ENV['SOUNDCLOUD_PASSWORD']
    )

    # Soundcloud
    @activity = soundcloud_client.get('/me/favorites').first(12)

    # Instagram
    @instagram = Instagram.user_recent_media("1111111", {:count => 12})
  end
end

1 个答案:

答案 0 :(得分:0)

可能更好的解决方法是加载索引,但不要从声明上加载该索引的列表。

而是在您的视图上调用一个Ajax调用,在您的控制器中调用纯JSON操作,这样做可以快速地为页面提供服务,而不是阻塞在soundclock上。您可以在视图上放置一个微调器,指示页面仍在加载。研究jquery加载方法。

https://api.jquery.com/load/

祝你好运。