1

我正在使用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
4

1 回答 1

0

您可能可以使用Memcache执行此操作,将查询和 penguin 组合起来。您必须自己做更多的工作,但我发现编写自己的缓存通常对我来说更好,因为当您过早打开缓存会导致大量错误。

这是您的代码可能执行的操作:

  1. 检查缓存中的@videos。由访问令牌和查询的串联键控。
  2. 如果缓存未命中,请执行获取并将结果存储在缓存中。
  3. 如果缓存命中,则返回缓存中的内容。反序列化,并将其存储在@videos

一个快速的问题:您将@client 设为实例变量是否有原因?您可能在控制器中执行此操作,并且不需要在视图中执行此操作,因此作为一般原则,您应该限制视图可用的范围。

于 2013-06-25T15:35:19.180 回答