1

youtube_it gemを使用して youtube API を使用しています。この gem は、Net::http を直接使用する代わりに、Faraday gemをアダプターとして使用します。このようなリモート リクエストを作成するには、少なくとも数秒かかることは既にご存じでしょうか。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を使用してこれを行うことができ、クエリとペンギンの組み合わせをキーオフします。自分でもう少し面倒なことをする必要がありますが、キャッシングを早くオンにしすぎると大量のバグが発生する可能性があるため、通常は独自のキャッシングを作成する方がよいことがわかりました。

コードでできることは次のとおりです。

  1. キャッシュ内の @videos を確認します。アクセス トークンとクエリの連結によってキーが付けられます。
  2. キャッシュ ミスが発生した場合は、フェッチを実行し、結果をキャッシュに保存します。
  3. キャッシュ ヒットがあった場合は、キャッシュにあるものを返します。デシリアライズして @videos に保存

簡単な質問: @client をインスタンス変数にする理由はありますか? おそらくコントローラーでこれを行っており、ビューでこれを必要としないため、一般的な原則として、ビューで使用できる範囲を制限する必要があります。

于 2013-06-25T15:35:19.180 に答える