failed to load response data request content was evicted from inspector cache
ブラウザの開発者ツールを使用している際に、「failed to load response data request content was evicted from inspector cache」というエラーが表示されることがあります。これは、特に大容量のファイル(15MB以上など)をAPI経由で取得する場合によく発生する問題です。この記事では、このエラーの原因と解決策について詳しく説明します。
問題の原因
このエラーは、ブラウザの開発者ツール(DevTools)が大きなレスポンスデータを一時的に保存するキャッシュの容量制限によって発生します。デフォルトでは、ChromeやFirefoxのDevToolsは大きなレスポンスデータを完全には保持しないため、ファイルサイズが大きい場合(通常10MB以上)にこのエラーが表示されます。
TIP
レスポンスステータスが「200 OK」で正常にデータが送信されているにもかかわらず、DevToolsのネットワークタブでプレビューが表示されない場合は、このキャッシュ制限が原因です。
解決方法
方法1: 開発者ツールの再起動
最も簡単な解決策は、開発者ツールを閉じて再度開くことです。
- ブラウザの開発者ツールを完全に閉じる
- ページをリフレッシュする
- 再度開発者ツールを開く
この方法で一時的なキャッシュ問題が解決することがあります。
方法2: リクエストを新しいウィンドウで開く
DevToolsのネットワークタブで該当するリクエストをダブルクリックすると、レスポンス内容を新しいブラウザウィンドウで確認できます。
方法3: cURLコマンドを使用する
DevToolsからリクエストをcURL形式でエクスポートし、ターミナルで実行する方法です。
- DevToolsのネットワークタブで該当リクエストを右クリック
- 「Copy」→「Copy as cURL」を選択
- ターミナルにコピーしたコマンドを貼り付け、レスポンスをファイルに保存
# 例: レスポンスをresponse.txtに保存
curl 'https://api.example.com/large-file' \
-H 'Authorization: Bearer token' \
> response.txt
方法4: Fetch APIをコンソールで使用する
Chrome DevToolsのコンソールを使用して直接レスポンスを取得する方法です。
- ネットワークタブでリクエストを右クリック
- 「Copy」→「Copy as fetch」を選択
- コンソールタブで以下のコードを実行
// レスポンスをテキストとして取得
var response = await fetch('https://api.example.com/large-file', {
method: 'GET',
headers: {
'Authorization': 'Bearer token'
}
});
var textData = await response.text();
console.log(textData);
// JSONデータの場合はこちら
var jsonData = await response.json();
console.log(jsonData);
方法5: 外部ツールを使用する
FiddlerやPostmanなどの専門ツールを使用してリクエストを監視・実行する方法です。
- Fiddler: ブラウザとサーバー間の通信をすべてキャプチャできます
- Postman: cURLコマンドをインポートしてリクエストを再実行できます
WARNING
PostmanにcURLコマンドをインポートする場合、JSONボディ内の二重引用符が正しく処理されないことがあるため、手動での調整が必要な場合があります。
予防策
大容量のデータを扱うAPIを設計する際は、以下の対策を検討してください。
- データをチャンク分割して送信する
- プログレッシブ読み込みを実装する
- 必要に応じて圧縮を適用する
- クライアント側でストリーミング処理を実装する
まとめ
「failed to load response data request content was evicted from inspector cache」エラーは、ブラウザの開発者ツールの制限によるもので、実際のデータ転送には影響しません。大きなファイルを扱う場合は、cURLやFetch APIを活用するか、専門的なネットワーク解析ツールを使用することが効果的です。
INFO
この問題はブラウザのパフォーマンス最適化のための設計上の制限であり、実際のアプリケーションの動作には影響しません。本番環境では問題なく大きなファイルを扱うことができます。