我将使用 Rack Cache(与 Memcache)来缓存来自我使用 Rails 构建的 API 的响应。此外,我需要为 API 实现命中计数。有什么建议可以解决这个问题吗?我猜它需要用 Rack 处理,但不知道从哪里开始。谢谢!
问问题
847 次
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)
这意味着每个请求/path
都会增加 Redis 键request_counter:/path
于 2013-09-16T02:50:14.217 回答