Performance: Rate limiting
Rate limiting controls how often users can make requests, impacting server load and response times.
Jump into concepts and practice - no test required
use Illuminate\Cache\RateLimiter;
public function handle(Request $request, Closure $next) {
$key = $request->ip();
$maxAttempts = 60;
$decayMinutes = 1;
if (app(RateLimiter::class)->tooManyAttempts($key, $maxAttempts)) {
return response('Too many requests', 429);
}
app(RateLimiter::class)->hit($key, $decayMinutes * 60);
return $next($request);
}public function handle(Request $request, Closure $next) {
// No rate limiting
return $next($request);
}| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No rate limiting | N/A | N/A | N/A | [X] Bad |
| Laravel built-in rate limiting middleware | N/A | N/A | N/A | [OK] Good |
RateLimiter::for?Route::middleware('throttle:api')->get('/data', function () { return 'OK'; });RateLimiter::for('login', function (Request $request) { return Limit::perMinute(5)->by($request->ip()); });