4

Rails で構築している API からの応答をキャッシュするために、Rack Cache (Memcache を使用) を使用します。さらに、API のヒット カウントを実装する必要があります。これをやってのけるための提案はありますか?Rackで処理する必要があると思いますが、どこから始めればよいかわかりません。ありがとう!

4

2 に答える 2

5

Rack ミドルウェアをミドルウェア スタックの一番上に追加して、リクエスト パスのカウンターをインクリメントすることをお勧めします。

たとえば、Redis でこれを行うには:

# lib/request_counter.rb
class RequestCounter
  def self.redis
    @redis ||= Redis.new(host: ENV["REDIS_HOST"], port: ENV["REDIS_PORT"])
  end

  def initialize(app)
    @app = app
  end

  def call(env)
    request = Rack::Request.new(env)
    self.class.redis.incr "request_counter:#{request.fullpath}"
    @app.call(env)
  end
end

# config/application.rb (in the Rails::Application subclass)
require "request_counter"
config.middleware.insert(0, RequestCounter)

これは、への各リクエストが/pathRedis キーをインクリメントすることを意味します。request_counter:/path

于 2013-09-16T02:50:14.217 に答える