スロットルリクエスト
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreへのリクエスト数を制限することができます。Services.Client。以下のように考えてみてください。
- リクエスト頻度を制限するために。
- ユーザータイプ(例えば無料か有料か)に応じて異なるサービス対応戦略を用いること。
- 高頻度リクエスト攻撃を防ぐためです。
このトピックでは以下の内容を説明します:
スロットル戦略
Sitecore。Services.Clientは、1時間間隔あたりのリクエスト数を制限するためのAPIを提供しています。デフォルトでは、Sitecore。Services.Clientには2つのスロットル戦略があります:
- スライディングウィンドウ – 時間間隔とその間隔内で許可されたリクエスト数を指定します。Sitecoreはさらなるリクエストを制限します。
- 複合戦略 – 複数の戦略を一つにまとめます。
!注戦略自体を含めることはできません。なぜなら、それは循環的な参照を生むからです。
例えば、異なるパラメータを持つ複数のスライディングウィンドウ戦略を作成できます。最初のものは短い時間(1〜5秒)でリクエストを拒否し、2つ目ははるかに長い時間(24時間)後にリクエストを拒否します。
!注スケールされた環境では、Sitecoreはインスタンス間で戦略状態を共有しません。戦略は各インスタンスに独自の状態を持ちます。
スロットリングはデフォルトで無効化されています。スロットリングを有効にするには、以下の方法でApp_Config\Sitecore\Services.Client Sitecore.Services.Client.configファイルをパッチで行います。
の値を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つのサービスに適用すると、1000msのウィンドウ内で合計5回のリクエストしか可能になりません。
Sitecoreが戦略を適用した際にエラーが発生した場合、リクエストは内部サーバーエラー(コード500)を受け取ります。
APIキーの使用
APIキーを使って戦略を適用すると、Sitecoreはその戦略をすべてのSitecoreに適用します。このAPIキーを使うサービス。クライアントのリクエスト。APIキーとOData APIキーの両方を使って戦略を適用できます。
例えば:
ServicesController
RequiredApiKey
public class SampleController : ApiController
Route("api/throttle/datawithkey")
public IEnumerable
例では、RequiredApiKey属性が定義されており、このコントローラーにアクセスするにはAPIキーが必須です。SitecoreはAPIキーが有効かつ使用可能かどうかを確認します。キーが有効であれば、Sitecoreは任意の戦略をリクエストに適用します。
APIキー項目の**「データ**」セクションにあるスロットル戦略フィールドで戦略を定義します。
APIコントローラーメソッドの使用
APIコントローラーメソッドに戦略を適用するには、コントローラーを定義し、その戦略を直接アクションに適用してください。例えば:
ServicesController
public class SampleController : ApiController
{
Throttle("Sliding Window")
Route("api/throttle/data")
public IEnumerable
コントローラーの使用
コントローラーに戦略を適用するには、コントローラーを定義し、その後コントローラーのクラスに戦略を適用します。例えば:
RequiredApiKey
Throttle("07 On Controller")
public class ThrottledOnControllerController : ApiController
{
Route("api/ThrottledOnController/data")
public IEnumerable
Sitecore 07 On Controller戦略をThrottledOnControllerControllerコントローラーのあらゆる方法に適用します。