Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Swift REST APIを実装する際の推奨事項

共同作成者

StorageGRID で使用するために Swift REST API を実装する場合は、次の推奨事項を考慮してください。

存在しないオブジェクトに対する HEAD の推奨事項

オブジェクトが実際に存在しないと思われるパスにオブジェクトが存在するかどうかをアプリケーションが定期的にチェックする場合は ' 使用可能な整合性制御を使用する必要がありますたとえば ' アプリケーションがそのロケーションに対して PUT 操作を実行する前に ' そのロケーションに対して HEAD 操作を実行する場合は ' Available 整合性制御を使用する必要があります

そうしないと、使用できないストレージノードがある場合に HEAD 処理でオブジェクトが見つからないと、「 500 Internal Server Error 」が大量に返される可能性があります。

PUT コンテナ整合性要求を使用して、各コンテナに「 available 」整合性制御を設定できます。

オブジェクト名の推奨事項

オブジェクト名の最初の 4 文字に、ランダムな値を使用しないでください。代わりに、イメージなど、ランダムで一意でないプレフィックスを使用してください。

オブジェクト名のプレフィックスにランダムな一意の文字を使用する必要がある場合は、オブジェクト名の前にディレクトリ名を指定してください。つまり、次の形式を使用します。

mycontainer/mydir/f8e3-image3132.jpg

次の形式は使用しないでください。

mycontainer/f8e3-image3132.jpg

「範囲の読み取り」に関する推奨事項

「格納オブジェクトの圧縮」オプション(* Configuration > System Settings > Grid Options *)を選択した場合、Swiftクライアントアプリケーションでは、バイト範囲を指定したGET object処理を実行しないでください。StorageGRID は要求されたバイトにアクセスするためにオブジェクトを圧縮解除する必要があるため ' これらの “range read” 操作は非効率的です非常に大きなオブジェクトから小さい範囲のバイト数を要求する GET Object 処理は特に効率が悪く、たとえば、 50GB の圧縮オブジェクトから 10MB の範囲を読み取る処理は非常に非効率的です。

圧縮オブジェクトから範囲を読み取ると、クライアント要求がタイムアウトする可能性があります。

メモ オブジェクトを圧縮する必要があり、クライアントアプリケーションが範囲読み取りを使用する必要がある場合は、アプリケーションの読み取りタイムアウトを増やしてください。