更新の制約

制約の設定

データベースの更新で説明したように、ローカル データベースを更新する場合、クライアントは hashes.search リクエストmaxUpdateEntries フィールドと maxDatabaseEntries フィールドを使用してサイズ制限を指定できます。クライアントは、メモリまたは帯域幅の制限がある場合にのみ、制約を設定する必要があります。

  • クライアントは、最大更新レスポンス サイズ(maxUpdateEntries)をエントリ数(1 エントリ = 1 追加または 1 削除)で指定できます。
  • クライアントは、最大データベース サイズ(maxDatabaseEntries)をエントリ数で指定できます(データベース内のエントリの大部分は 4 バイトのハッシュ プレフィックスであるため、1 エントリは約 4 バイトと仮定できます)。

帯域幅とストレージ

クライアントは更新レスポンスとデータベース サイズに任意のサイズを指定できますが、Web Risk サーバーは限られた数の可能な更新レスポンスとデータベース サイズを事前に生成します。

  • クライアントは、更新レスポンス サイズ(maxUpdateEntries)を使用して帯域幅の使用量を制限する必要があります。
  • クライアントは、データベース サイズ(maxDatabaseEntries)を使用して、デバイスに必要な RAM またはディスク ストレージの容量を制限する必要があります。

これらの上限はどちらも、更新されているデータベースのサイズに影響するため、ユーザーに提供される保護量に影響します。つまり、ローカル データベースのサイズが大きいほど、保護が強化されます。

制約を設定するためのガイダンス

セーフ ブラウジング リストのサイズは、徐々にまたは突然変化することがあります。クライアントはリスト更新のリクエストに maxUpdateEntries を設定する必要があります。これにより、リスト更新のレスポンスの最大サイズが制限され、大規模な更新を処理できない場合の信頼性が向上します。

より厳しい要件や厳しくない要件がない場合は、maxUpdateEntries=16777216 を使用することをおすすめします。一般的なリストエントリのサイズのハッシュ プレフィックスあたり 4 バイトの場合、これはリストあたり約 67 メガバイトに相当します。モバイル クライアントには、通常は性能がより低いため、より低い上限 maxUpdateEntries=2097152 を使用することをおすすめします。一般的なリストエントリのサイズのハッシュ プレフィックスあたり 4 バイトでは、これはリストあたり約 8 メガバイトに相当します。

セーフ ブラウジング リストのサイズと成長率は異なります。ただし、クライアントは、各リストで許可される最大メモリ使用量または帯域幅使用量に基づいて、すべてのリストに同じ制約を設定する必要があります。

信頼性を向上させるため、クライアントは、メモリや帯域幅の過剰使用を検出するためのテレメトリーを実装し、新しい制約をクライアントに迅速に提供するメカニズムを実装することをおすすめします。

クライアントの状態

Web Risk サーバーは、クライアントを古い状態のままにしておくアップデートを送信することはありません。クライアントは、更新リクエストのたびに完全に最新の状態になります。たとえば、クライアントに現在 4,096 エントリのデータベースがあるが、2,048 デルタのみをダウンロードする場合、クライアントが実際に最新ではない場合、クライアントを 2,048 のデータベースにリセットします。