ホームページ >ウェブフロントエンド >jsチュートリアル >レート制限の基本: 仕組みと使用方法
レート制限は、Web 開発において重要な概念です。これにより、サーバーの安定性、効率的なリソース割り当て、悪意のある攻撃からの保護が保証されます。そこでこの記事では、レート制限の本質、その重要性、さまざまな実装方法、およびその機能を示す実践的な例について詳しく説明します。早速入ってみましょう?
レート制限は、Web サービスまたはサーバーへの受信リクエストまたはトラフィックの量を制御するために使用される戦略です。これは、アプリケーションを悪用から保護し、公平なリソース配分を保証し、サービスの安定性を維持するのに役立ちます。
レート制限を使用する必要がある理由をいくつか示します??
? 私は、トークン バケット アルゴリズムとリーキー バケット アルゴリズムについては、現在のプロジェクトでは必要としていないので、あまり知りません。嘘をつくつもりもありません。ただし、固定窓と引き違い窓が最も一般的なタイプです。たとえば、OpenAI の GPT-4 は段階的な制限を持つ固定ウィンドウ レート制限を使用しています。最初の段階では 1 分あたり 500 リクエストが許可されます。ユーザーがウィンドウがリセットされる直前に制限に達する可能性があるため、このアプローチではバースト トラフィックが発生する可能性があります。
このプロセスには通常、以下が含まれます:
レート制限とその仕組みの基本を理解できたので、これから作成するプロジェクトにレート制限を実装してみましょう。
レート制限を示す 2 つのプロジェクトを作成します。
任意の名前でフォルダーを作成し、VS コードまたは使用するコード エディターでそれを開きます。
作成したフォルダー内に、frontend と backend という名前のフォルダーをさらに 2 つ作成します。
その後、バックエンド フォルダーに移動し、コマンド npm init -y を入力して package.json ファイルを初期化します
その後、以下の npm パッケージをバックエンド フォルダー内にインストールします ??
npm install express cors express-rate-limit npm install -D nodemon
これらの機能:
その後、レート リミッターの設定に使用するため、index.js ファイルを作成します (任意に作成できます)。
このコードをコピーして貼り付けたら、後で説明します
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"); });
各部分の機能は次のとおりです:
その後:
ユーザーが同じ IP から 15 分間に 100 回を超えて API にアクセスすると、API にアクセスする代わりにエラー メッセージが表示されます。
仕組みがわかったので、package.json に追加して自動再起動を有効にします??
{ "scripts": { "dev": "nodemon index.js" } }
バックエンドについては以上です。
フロントエンドをセットアップします。
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"); });
何が起こっているかは次のとおりです:
GET リクエストの例については以上です。次の例に進みましょう
この例では、最初の例のコードをコメントアウトして、このコードを貼り付けることができます??
{ "scripts": { "dev": "nodemon index.js" } }
ほとんどのコードは最初の例と同じであることがわかりますが、重要な違いがいくつかあります??
このコードをフロントエンドにも貼り付けます
npm create vite@latest .
ここでは、フォームを通じてサーバーにリクエストを行っているだけです。これが GET の例とどのように異なるかを見てみましょう:
フォームでは 15 分間に 5 件の送信が可能です。その後、ユーザーにはレート制限エラー メッセージが表示されます。
さて皆さん、この記事を最後までお読みいただけましたでしょうか?レート制限がどのように機能するのか、そして特にお金が関係する大規模なプロジェクトに取り組んでいる場合に、レート制限をプロジェクトで使用する必要がある理由について理解していただけたと思います。ご質問がございましたら、お気軽にコメントでお問い合わせください。コーディングを楽しんでください?
以上がレート制限の基本: 仕組みと使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。