2010-03-07 11 views
10

Próba znalezienia wtyczki Railsowej dla przeglądarki Google, która pozwoli zmniejszyć liczbę żądań danego zasobu. Django ma Piston ma trochę kodu open source. Czy jest coś, co jest dostępne po wyjęciu z pudełka dla Railsów lub czy można bezpiecznie założyć, że patrząc na to, jak Piston to robi i przenosić go jako wtyczkę Railsa, można nad nim pracować?Ograniczanie żądań do Ruby on Rails API

Odpowiedz

1

Jest SO thread here o tym, dlaczego warto, aby ocenić granicę poza Twoją aplikacją. Przynajmniej do myślenia. Sam szukam tego rozwiązania i jestem w powietrzu, czy chcę to zrobić w warstwie aplikacji.

2

Rack::Defense to oprogramowanie pośredniczące typu rack do dławienia i filtrowania żądań. Jest łatwy w konfiguracji, ma mały rozmiar i ma tylko dwie zależności (rack i redis). Można filtrować praktycznie żadnych kryteriów: IP, API żeton, nazwę użytkownika itd

Oto przykład jak można zdławić żądania POST na ścieżce /login z maksymalną szybkością 20 zamówienie na minutę na IP:

Rack::Defense.setup do |config| 
    config.throttle('login', 20, 60 * 1000) do |req| 
    req.ip if req.path == '/login' && req.post? 
    end 
end 

Innym przykładem, w jaki sposób udusić żądań GET na ścieżce /api/* z maksymalną prędkością 50 zamówienie na sekundę na API tokena:

Rack::Defense.setup do |config| 
    config.throttle('api', 50, 1000) do |req| 
    req.env['HTTP_AUTHORIZATION'] if %r{^/api/} =~ req.path 
    end 
end 

Disclamer: Jestem Rack :: obrony gem opiekunowie.