Performance: Rate limiting with express-rate-limit
MEDIUM IMPACT
This affects server response time and user experience by controlling request frequency to prevent overload.
import rateLimit from 'express-rate-limit'; const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 100, // limit each IP to 100 requests per window standardHeaders: true, legacyHeaders: false }); app.use(limiter);
app.use((req, res, next) => {
// Custom naive rate limiting
if (!req.session.requests) req.session.requests = 0;
req.session.requests++;
if (req.session.requests > 100) {
res.status(429).send('Too many requests');
} else {
next();
}
});| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Custom naive rate limiting | N/A (server-side) | N/A | N/A | [X] Bad |
| express-rate-limit middleware | N/A (server-side) | N/A | N/A | [OK] Good |