Go を使用して HTTP 応答で部分コンテンツを提供する
HTTP 応答で部分コンテンツを提供すると、クライアントはファイルの特定の範囲をリクエストできます。これは、クライアントがシークまたはループの目的でファイルの一部をダウンロードするだけで済むメディア再生の処理に役立ちます。
部分的なコンテンツを提供する方法
提供するにはGo で http パッケージを使用して部分コンテンツを使用する場合は、ServeContent または ServeFile を使用できます。 function.
ServeFile: の使用 ファイルシステムから直接ファイルを提供している場合は、http.ServeFile:
http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "my-file.mp3") })
ServeContent の使用: の場合バッファまたはストリームからコンテンツを提供している場合は、http.ServeContent:
func handleContent(w http.ResponseWriter, r *http.Request) { content := getMyContent() http.ServeContent(w, r, "my-file.mp3", time.Now(), bytes.NewReader(content)) }
ServeFile と ServeContent の両方で範囲リクエストを処理し、部分コンテンツに適切なコンテンツ ヘッダーを設定できます。 .
部分的なコンテンツの実装自分自身
http パッケージには部分コンテンツを提供するための使いやすい関数が用意されていますが、特定のシナリオでは自分で実装する必要がある場合があります。概要は次のとおりです。
部分的なコンテンツの実装自分自身にサービスを提供するには、ステータス コード、リクエスト ヘッダー、およびコンテンツ ソースのシークを慎重に処理する必要があります。
Byte Serving と io.ReadSeeker
Byte Serving は、部分的なコンテンツを提供します。これにより、クライアントはファイルの特定の範囲をリクエストできるようになります。バイト サービングを実装するには、コンテンツを io.ReadSeeker (ストリーム内で読み取りとシークのメソッドを提供するインターフェイス) として表す必要があります。
bytes.Reader 型を使用して、コンテンツを io として表すことができます。 .ReadSeeker。 bytes.Reader は、バイトのスライスまたは任意の io.Reader 実装から初期化できます。
コンテンツの io.ReadSeeker ビューを作成することで、コンテンツ ソースからデータをいつどのように読み取るかを制御できます。これにより、範囲リクエストを処理し、部分的なコンテンツを効果的に提供できるようになります。
以上がGo HTTP レスポンスで部分的なコンテンツ提供を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。