このようなサイトにはいくつかの画像タグがあります。
<img src="img.png"/>
それらをロードしようとすると、半分しかロードされません。ネットワークコンソールで要求を確認すると、応答は次のようになっています。
206部分的なコンテンツ
私はそれをグーグルで調べましたが、ヘッダーに範囲が設定されている場合、これは次のようになります。しかし、これらのヘッダーは実際にはどこに設定されていますか?そして、どうすればこれを回避し、完全な画像をロードできますか?
ser166390の回答から 質問へ Firebugが動画読み込みリクエストで「206 Partial Content」応答を表示するのはなぜですか?
この部分コンテンツコード(206)mayは、クライアントが範囲を要求したときにサーバーから送信されます(たとえば、「最初の2MBのビデオデータを提供してください」)。
未使用のリソースをフェッチすることを避けるため、データをチャンクでダウンロードするために不可欠です。 (私がオンラインで完全なビデオを見ることはめったにありません。)
Range
ヘッダーの発信リクエストを見てください。
残りのデータ(または次のビット)を取得するために別の呼び出しを行うのはクライアント次第です。何もする必要はありません。彼らは最終的に完全な画像を取得します。たとえそれがいくつかのhttp呼び出しを必要としてもです。
異なるサブドメインからフォントをロードするときに同様の問題がありました。私の場合、クロスドメインの問題により206が発生していましたが、ルートフォルダーに.htaccessファイルを置くだけで解決しました。
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
まず:
HTTP206 Partial Content
成功ステータスの応答コードは、リクエストが成功し、Range
リクエストのヘッダー。
範囲が1つしかない場合、応答全体のContent-Type
がドキュメントのタイプに設定され、Content-Range
が提供されます。
複数の範囲が送り返される場合、Content-Type
はmultipart/byteranges
に設定され、各フラグメントは1つの範囲をカバーし、Content-Range
およびContent-Type
で記述されます。
( Mozillaの優れたHTTPステータスコードリファレンスから。 )
次:
リソースに設定されるHTTPヘッダーは通常、Webサーバーによって設定されます。ただし、ビデオファイルのようにファイルが大きい場合は、 ブラウザは、読み込まれているリソースのチャンクをリクエストできます です。通常、HTTP 206
ヘッダーは、クライアントが開始したリクエストから返されます。 Apacheのリソースに設定されるヘッダーは、mod_headers
のhttpd.conf
セクションで設定されます。部分的なコンテンツがオンになっているかどうかを確認するには、次の行を探します。
Header set Accept-Ranges bytes
このセクションは、Apacheによって設定されるヘッダーの動作を制御するため、開始するのに適した場所になります。
ただし、ヘッダーの設定はさまざまな方法で実行できます。たとえば、Apacheを使用する場合、キャッシュされるようにロードされるイメージを制御できます。これは、[a2enmod module][2]
を使用して実行できます。これにより、サーバーの負荷が軽減されます。