تحديد المعدّل (Rate Limiting)
يحدّ عدد الطلبات لكل مستخدم لمنع الإساءة وهجمات الحرمان:
npm install express-rate-limit
import rateLimit from "express-rate-limit";
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 دقيقة
max: 100 // 100 طلب كحدّ أقصى
});
app.use("/api", limiter);
عند التجاوز يردّ الخادم بـ 429 Too Many Requests.
التخزين المؤقّت (Caching)
أخبر العميل/الوسطاء بإمكان تخزين الردّ:
res.set("Cache-Control", "public, max-age=3600"); // ساعة
res.json(data);
ETag للتحقّق
ETag: "abc123"
العميل يرسل If-None-Match؛ إن لم يتغيّر، يردّ الخادم 304 Not Modified (توفير نطاق).
أين نخزّن؟
- ذاكرة مؤقّتة على الخادم (Redis) للبيانات المتكرّرة.
- CDN للموارد العامّة.
🎯 التالي: التوثيق والاختبار.