コンテンツAPIでGETリクエストした際、エラー後にリトライしても同じエラーが返却されるのはなぜですか?
→ CDNによりキャッシュされたエラーが返却されている可能性があります。
CDNでは通常のレスポンスだけでなく、エラーレスポンスもキャッシュの対象となります。
エラーレスポンスに関しては最大で10秒間キャッシュが有効になる場合があります。
そのため、エラー発生直後にリトライを行うと、CDNによりキャッシュされた同一のエラーが返却される可能性があります。
対処方法
microcms-js-sdkをご利用の場合
microcms-js-sdkには、エラー発生時に自動リトライを行うretry: true
オプションが用意されています。このオプションを有効にすると、特定のエラー(例:429、503)が発生した際にリクエストのリトライが自動で行われます。
リトライ処理には、Exponential Backoff というアルゴリズムが採用されており、リトライの間隔が段階的に長くなります。
-
-
1回目のリトライ:初回リクエスト失敗から、5秒~10秒のディレイ
-
2回目のリトライ:2回目のリクエスト失敗から、10秒~20秒のディレイ
-
このように、リトライの間隔をあけることで、CDNキャッシュの有効期間を回避しやすくなります。
リトライオプションの詳細はブログ「microcms-js-sdkにリトライオプションが追加されました」をご参照ください。
リトライ処理を独自に実装されている場合
リトライ処理を独自に実装されている場合は、Exponential Backoff 等の遅延機構を導入するなどし、10秒以上あけて再試行することをご検討ください。