Youtube API消费&高速缓存

时间:2013-06-21 01:27:01

标签: ruby-on-rails ruby-on-rails-3 caching ruby-on-rails-3.1 youtube-api

我正在使用youtube_it gem来使用youtube API。而且这个gem使用Faraday gem作为适配器,而不是直接使用Net :: http。正如您已经知道做出这样的远程请求需要至少几秒钟?既然我没有直接访问 Net :: http 库,我将如何在我的应用程序中实现缓存?以下是从youtube上获取视频的示例请求。

      #Authentication
     $ @client = YouTubeIt::OAuth2Client.new(client_access_token: "access_token", client_refresh_token: "refresh_token", client_id: "client_id", client_secret: "client_secret", dev_key: "dev_key", expires_at: "expiration time")

        #Request
      @videos= @client.videos_by(:query => "penguin").videos #=>returns array of videos

1 个答案:

答案 0 :(得分:0)

您可以使用Memcache执行此操作,键入查询和企鹅的组合。你必须自己做更多的工作,但我发现通常我更好地编写自己的缓存,因为当你过早开启时,缓存会导致大量的错误。

以下是您的代码可能会执行的操作:

  1. 检查缓存中的@videos。由访问令牌和查询的串联键入。
  2. 如果存在缓存未命中,请执行提取并将结果存储在缓存中。
  3. 如果有缓存命中,请返回缓存中的内容。反序列化,并将其存储在@videos
  4. 一个简单的问题:你有没有理由让@client成为一个实例变量?您可能正在控制器中执行此操作,并且在视图中不需要此操作,因此作为一般原则,您应该限制视图可用的范围。