La limitation de débit est un concept essentiel dans le développement Web. Il garantit la stabilité du serveur, une allocation efficace des ressources et une protection contre les attaques malveillantes. Ainsi, dans cet article, nous approfondirons l’essence de la limitation de débit, son importance, diverses méthodes de mise en œuvre et des exemples pratiques pour démontrer sa fonctionnalité. Allons-y directement ?
La limitation de débit est une stratégie utilisée pour contrôler la quantité de requêtes entrantes ou le trafic vers un service Web ou vers un serveur. il aide à protéger vos applications contre les abus, garantit une répartition équitable des ressources et maintient la stabilité du service.
Voici quelques-unes des raisons pour lesquelles vous devriez utiliser la limitation de débit ??
? Je ne vais même pas mentir car je ne connais pas grand chose aux algorithmes Token Bucket et Leaky Bucket, car je n'en ai pas eu besoin pour mes projets actuels. Cependant, la fenêtre fixe et la fenêtre coulissante sont les types les plus courants que vous rencontrerez. Par exemple, GPT-4 d'OpenAI utilise une limitation de débit de fenêtre fixe avec des limites échelonnées : leur premier niveau autorise 500 requêtes par minute. Cette approche peut entraîner une explosion du trafic, car les utilisateurs peuvent atteindre leur limite juste avant la réinitialisation de la fenêtre.
Le processus implique généralement :
Maintenant que vous avez une compréhension de base de la limitation de débit et de son fonctionnement, mettons la main à la pâte en la mettant en œuvre dans un projet que nous allons créer.
Nous allons créer deux projets démontrant la limitation de débit :
Créez un dossier avec le nom de votre choix et ouvrez-le sur le code VS ou quel que soit l'éditeur de code que vous utilisez.
Dans ce dossier que vous avez créé, créez deux autres dossiers appelés frontend et backend.
Après cela, cd dans les dossiers backend et entrez cette commande npm init -y pour initialiser un fichier package.json
Après cela, installez les packages npm suivants dans le dossier backend ??
npm install express cors express-rate-limit npm install -D nodemon
Que font-ils :
Après cela, créez un fichier index.js (vous pouvez le faire comme vous voulez) car nous l'utiliserons pour configurer le limiteur de débit.
Après avoir fini, copiez et collez ce code que je vais vous expliquer dans un instant
const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); // Set up rate limiter: 100 requests per 15 minutes const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 5, // Limit each IP to 5 requests per `window` (here, per 15 minutes) message: "Too many requests from this IP, please try again later.", }); // Apply the rate limiting middleware to all requests app.use(limiter); app.get("/api/data", (req, res) => { res.send("Welcome to the API!"); }); app.listen(5000, () => { console.log("Server running on http://localhost:5000"); });
Voici ce que fait chaque partie :
Puis :
Lorsque les utilisateurs accèdent à votre API plus de 100 fois en 15 minutes à partir de la même adresse IP, ils reçoivent le message d'erreur au lieu d'accéder à l'API.
Maintenant que vous savez comment cela fonctionne, nous souhaitons activer le redémarrage automatique en ajoutant à package.json ??
{ "scripts": { "dev": "nodemon index.js" } }
C'est tout pour le backend.
Il est temps de configurer le frontend.
npm install express cors express-rate-limit npm install -D nodemon
const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); // Set up rate limiter: 100 requests per 15 minutes const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 5, // Limit each IP to 5 requests per `window` (here, per 15 minutes) message: "Too many requests from this IP, please try again later.", }); // Apply the rate limiting middleware to all requests app.use(limiter); app.get("/api/data", (req, res) => { res.send("Welcome to the API!"); }); app.listen(5000, () => { console.log("Server running on http://localhost:5000"); });
Voici ce qui se passe :
Il s’agit de l’exemple de requête GET. Passons à l'exemple suivant
Pour cet exemple, vous pouvez décider de commenter le code du premier exemple et coller ce code ??
{ "scripts": { "dev": "nodemon index.js" } }
Vous pouvez voir que la plupart du code est identique à celui du premier exemple, mais voici juste quelques différences clés ??
Collez également ce code sur le frontend
npm create vite@latest .
Ici, nous faisons simplement une requête au serveur via un formulaire. Voyons en quoi cela diffère de l'exemple GET :
Le formulaire autorise 5 soumissions en 15 minutes - après cela, les utilisateurs voient le message d'erreur de limite de débit.
Très bien les gars, félicitations pour être arrivés à la fin de cet article ?. J'espère que vous avez maintenant une idée du fonctionnement de la limitation de débit et des raisons pour lesquelles vous devriez l'utiliser sur vos projets, surtout si vous travaillez sur des projets plus importants qui impliquent de l'argent. Si vous avez des questions, n'hésitez pas à les poser dans le commentaire. Bon codage ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!