
技術的に、ホスティング方法(サーバー上)の違いは何ですか?
- ダウンロード中に一時停止して再開できるファイル、および
- 一度にダウンロードする必要があるファイルですか?
答え1
サーバーは、部分的なコンテンツを提供し、部分的なリクエストを処理する機能をサポートする必要があります。社内で構築したものを使用しているのでない限り、ほとんどの最新の Web サーバーはこれを処理できます。
詳しくはこちらをお読みくださいアパッチドキュメントと関連する RFC。リンクされたドキュメントからの応答の例。
HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 500-999/8000
...the first range...
--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 7000-7999/8000
...the second range
--THIS_STRING_SEPARATES--
答え2
content-size
よくあるのは、 またはヘッダーがないことですcontent-range
。おそらく、作成者がダウンロード スクリプトで 1 つを設定するのを忘れたのでしょうか。
答え3
HTTPサーバーがセクション14.35で定義されている範囲取得要求をサポートしている場合は、ダウンロードを再開できます。RFC 2616ウィキペディアでは「バイトサービング「どういうわけか。」
- サーバーは、バイト サービングをサポートしていることを示すために、または要求
Accept-Ranges: bytes
に対する応答を送信します。HEAD
GET
- クライアントは
GET
を含むリクエストを送信しますRange: bytes=aaa-bbb
。開始オフセットはaaa
ファイルの先頭から バイトで、範囲の長さはbbb - aaa + 1
バイトです。 - サーバーは、 を含むステータス 206 (部分コンテンツ) 応答を送信します。
Content-range: bytes aaa-bbb/cccc
ここで、aaa-bbb
は前述と同様で、cccc
はバイト単位のファイルの長さ、または*
サーバーが判別できない場合は であり、その後に要求されたバイト範囲を含む応答本体が続きます。範囲が範囲外の場合、サーバーは代わりにステータス 416 (要求された範囲は満たされない) 応答を送信します。
一部のビデオプレーヤーは、ビデオのシークをサポートするために範囲要求を使用します。Oggメディアコンテナは、補間二分探索このユースケースをサポートします。
一般的な Web サーバー ソフトウェアは、静的ファイルから範囲を提供するように構成できますが、ダウンロードを認証するサーバー側スクリプトでは、範囲自体を処理する必要がある場合もあります (スクリプト言語のマニュアルを確認してください)。一般に公開されているダウンロード サーバーの運営者の中には、範囲の要求を意図的にブロックする人もいます。これは、いくつかのダウンロード マネージャーがコンテンツ範囲のサポートを使用してサーバーに複数の要求を行い、他のユーザーにダウンロードを提供するために使用できるリソースを占有しているためです。