web-dev-qa-db-ja.com

Firebugがビデオの読み込み要求で「206PartialContent」応答を表示するのはなぜですか?

プリロード属性が「auto」に設定されたhtml5ビデオ要素がたくさんあります。それらは正常にロードを開始しますが、(キャッシュをクリアせずに)ページをリロードするたびに、最初からやり直すため、キャッシュに問題がある可能性があると思います。

Firebugでネットワークパネルをチェックしたところ、他のすべて(画像とファイル)から「304notmodified」メッセージが表示され、ビデオ(およびオーディオ)ファイルから「206partialcontent」メッセージが表示されていました。重複したエントリで。

「206パーシャルコンテンツ」応答は、予想どおり「200 OK」応答ではなく、キャッシュがクリアされた状態でページがロードされたときに重複エントリにも表示されます。

これはビデオおよびオーディオ要素の正常な動作ですか?そうでない場合、どのように修正できますか?

17
CCrawler

この部分コンテンツコード(206)mayクライアントが範囲を要求したときにサーバーから送信されます(例:「最初の2MBのビデオデータをください」)。

未使用のリソースのフェッチを回避するために、データをチャンクでダウンロードするために不可欠です。 (私はめったに完全なビデオをオンラインで見ません。)Rangeヘッダーの発信要求を見てください。

ステータスコード(RFC2616 --HTTP/1.1) を参照してください(any 2xxコードは「成功」を意味することに注意してください):

10.2.7 206部分的なコンテンツ:

サーバーは、リソースに対する部分的なGET要求を実行しました。 リクエスト[〜#〜] must [〜#〜]には、目的の範囲を示すRangeヘッダーフィールド(セクション14.35)が含まれています、およびリクエストを条件付きにするために、If-Rangeヘッダーフィールド(セクション14.27)を含めることができます(MAY)。

そして 範囲ヘッダー セクションから:

IfサーバーがRangeヘッダーをサポートしているand指定された1つまたは複数の範囲がエンティティに適切である

  • 無条件のGETにRangeヘッダーが存在すると、GETが成功した場合に返される内容が変更されます。つまり、応答には、200(OK)ではなく206(部分コンテンツ)のステータスコードが含まれます。

ただし、キャッシュやETagの複雑さ、またはFireFoxで何を期待できるかはわかりません。

17
user166390

ローカル開発マシンのFirefoxでは、サーバーがそれらを使用するように構成されていない限り、.webmビデオを再生できませんでした。 Firebugは206を表示しますが、何も表示されません。これは、追加することで解決できます

AddType video/webm .webm

あなたの.htaccessに。

1
Titan

https://httpstatuses.com/206 によると

「複数の部分を要求しないク​​ライアントはマルチパート応答をサポートしない可能性があるため、サーバーは単一の範囲の要求に対してマルチパート応答を生成してはなりません。ただし、サーバーは、単一の本体部分のみでマルチパート/バイト範囲のペイロードを生成できます。複数の範囲が要求され、1つの範囲のみが充足可能であるか、合体後に1つの範囲のみが残っていることが判明しました。multipart/ byteranges応答を処理できないクライアントは、複数の範囲を要求する要求を生成してはなりません。

マルチパート応答ペイロードが生成されると、サーバーは、対応するbyte-range-specが受信したRangeヘッダーフィールドに表示されたのと同じ順序でパーツを送信する必要があります。ただし、満足できないと見なされた範囲や他の範囲に統合された範囲は除きます。マルチパート応答を受信するクライアントは、各ボディパーツに含まれる範囲を判別するために、各ボディパーツに存在するContent-Rangeヘッダーフィールドを検査する必要があります。クライアントは、要求したのと同じ範囲、または要求したのと同じ順序を受信することに依存することはできません。」

0
bowen wang