要求のスロットル
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore.Services.Clientに対するリクエストの数を調整できます。次の操作を行うことができます。
-
要求の頻度を制限するため。
-
ユーザーの種類 (無料と有料など) に基づいて要求を処理するために異なる戦略を使用する。
-
高頻度の要求攻撃を防ぐため。
このトピックでは、次の内容について説明します。
スロットル戦略
スロットル戦略
Sitecore.Services.Clientは、時間間隔あたりのリクエスト数を制限するために使用できるAPIを提供します。デフォルトでは、Sitecore.Services.Clientには2つのスロットル戦略があります。
-
スライディングウィンドウ – 時間間隔と、その間隔で許可されるリクエストの数を指定します。Sitecoreは、それ以上の要求を調整します。
-
コンポジット – 複数の戦略を1つにまとめます。
ストラテジー自体を含めると循環参照が作成されるため、含めることはできません。
たとえば、さまざまなパラメーターを持つ多数のスライディング ウィンドウ戦略を構成できます。最初のものは短い時間期間(1〜5秒)後にリクエストを拒否し、2番目のものははるかに長い時間(24時間)後にリクエストを拒否します。
スケーリングされた環境では、Sitecoreはインスタンス間でストラテジーの状態を共有しません。ストラテジーには、各インスタンスで独自の状態があります。
スロットルはデフォルトで無効になっています。調整を有効にするには、次の方法でApp_Config\Sitecore\Services.Client Sitecore.Services.Client.configファイルにパッチを適用します。
-
<setting name="Sitecore.Services.IsThrottleEnabled" value="false" /> の値をtrueに変更します。
ストラテジーは、masterデータベースの/sitecore/system/Settings/Services/Throttle Strategiesにあります。
ストラテジーは、Throttle Strategiesのすぐ下に追加することも、サブフォルダー(Strategy Folder)を作成して、そのサブフォルダーにストラテジーを追加することもできます。
ストラテジーの構成
ストラテジーの構成
各戦略アイテムのCommon OptionsセクションのTypeフィールドに値を指定する必要があります。値は、ストラテジを実装するクラスのフルネームです (例:Sitecore.Services.Infrastructure.Throttle.Strategies.SlidingWindowThrottleStrategy, Sitecore.Services.Infrastructure)。
ストラテジアイテムには、ストラテジタイプに依存する特定のパラメータセットが含まれています。パラメータは、ストラテジーの動作を指定します。
たとえば、スライディング ウィンドウ戦略の場合、次のようになります。

たとえば、複合ストラテジーの場合、次のようになります。

ストラテジの適用
ストラテジの適用
ストラテジーは、次の3つの方法で適用できます。
-
APIキーを使用します。
-
APIコントローラのメソッド(属性ベースのスロットル)を使用します。
-
APIコントローラを使用します。
これらの方法は、任意の組み合わせで使用できます。Sitecoreは、戦略の成果を組み合わせます。
Sitecoreは、リクエストに2つ以上の戦略を適用するときに、次のルールを使用します。
-
同じ戦略を複数の方法で指定した場合、Sitecoreはそれを一度だけ適用します。
-
メソッドまたはコントローラーに複数の戦略を指定すると、Sitecoreは戦略を組み合わせます。
同じストラテジを複数回使用すると、ストラテジーは状態を共有します。たとえば、Time Span = 1000 msパラメーターとAllowed Number of Requests = 5 requestsパラメーターを使用してスライディング ウィンドウ戦略を指定し、それを2つのサービスに適用すると、1000ミリ秒のウィンドウで可能な要求は合計で5つだけになります。
Sitecoreがストラテジーを適用したときにエラーが発生した場合、リクエストは内部サーバー エラー (コード500) を受け取ります。
APIキーの使用
APIキーを使用してストラテジーを適用すると、SitecoreはこのAPIキーを使用するすべてのSitecore.Services.Clientリクエストにストラテジーを適用します。APIキーとOData APIキーを使用して戦略を適用できます。
例えば:
この例では、RequiredApiKey属性が定義されており、このコントローラーにアクセスするにはAPIキーが必須です。Sitecoreは、APIキーが有効で、使用できる状態にあるかどうかを確認します。キーが有効な場合、Sitecoreは定義された任意の戦略をリクエストに適用します。
ストラテジーは、APIキーアイテムのDataセクションのThrottle Strategyフィールドで定義します。
APIコントローラー メソッドの使用
APIコントローラー メソッドにストラテジーを適用するには、コントローラーを定義し、アクションに直接ストラテジーを適用します。例えば:
コントローラーの使用
コントローラーにストラテジーを適用するには、コントローラーを定義してから、コントローラーのクラスにストラテジーを適用します。例えば:
Sitecoreは、ThrottledOnControllerControllerコントローラーの任意のメソッドに07 On Controllerストラテジーを適用します。