質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.54%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Q&A

解決済

1回答

8385閲覧

HTTP Chunked transfer encodingの各チャンクサイズの決定方法は?

sounisi5011

総合スコア697

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

0グッド

1クリップ

投稿2014/12/03 11:45

HTTP Chunked transfer encodingの各チャンクサイズは、どのように決定されるのでしょうか?
各サイトの例示を見る限り、チャンクサイズに上限は無く、適当に決めても問題ないようですが…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

2

ベストアンサー

参考URL: Content-Length header V.S. chunked encoding

【静的なコンテンツ】
【動的に生成されるサイズの小さなコンテンツ】

Content-Length: xxx の計算が容易なため、(TCPレベルで見たときの)通信が1回で済むこちらを使うべきでしょう。 Transfer-Encoding: Chunked の出る幕はありません。

【動的に生成されるサイズの大きなコンテンツ】
【無限に流れるストリーミングコンテンツ】

サイズが大きい場合、全ての生成が終わるまで待っていては効率が悪いです。また、無限なストリーミングでは永遠に終わらないため、逐次 Transfer-Encoding: Chunked で返していくしかありません。

例えばTwitterのストリーミングAPIは、(無圧縮の場合は) 1チャンクあたり1イベント/1ツイート/1リスト というキリのいい分割が為されています。意味のまとまり に着目する場合はこのように特に迷うことは何も無いでしょう。

問題となる例は、ニコ生配信などのケースですよね。こういうメディアデータなどは一概にどこかで分割出来る訳でもなく、サーバ側・クライアント側・通信回線のあらゆる要素に影響されてくると思います。これに関しては自分もまだ勉強中の身なので、直球の回答をすることは出来ません、すいません…

投稿2014/12/03 14:17

mpyw

総合スコア5223

argius, BlueMoon👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngyuki

2014/12/04 00:23

最近だと Server-Sent Events も「無限に流れるストリーミング」なので Chunked だったと思います
sounisi5011

2014/12/04 08:54

何となく、Content-LengthよりもHTTP Chunked transfer encodingのほうが最適と思い込んでいましたが、実際は特殊な用途で利用するべき仕様なのですね。 携帯電話でも非対応の環境が存在することを考えると、利用するべきではないかもしれません。 http://tilfin.hatenablog.com/entry/20080723/1216791007 ありがとうございます、また新しい知識を得ることが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.54%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。