Categories
Tags
351 words
2 min
HTMLのscriptタグを書く位置について
この記事は公開日から1年以上が経過しています。
前提
HTTP/1.1では使用されるが HTTP/2以降のプロトコルでは廃止されているので注意
そもそもChunk転送(チャンク転送)とは何者?
**Chunk転送(チャンク転送)**は、HTTP/1.1で導入されたデータ転送方式のひとつ。 サーバーがレスポンスのコンテンツ長を事前に決定できない場合や、 ストリーミングデータのように順次データを送りたい場合に使われるもの。
特に サーバーがコンテンツ長を事前に決めなくても送信できるので ストリーミングや動的コンテンツ生成に便利
基本概念
通常、HTTPレスポンスのヘッダにはContent-Length
が含まれます。これにより、ブラウザやクライアントはレスポンスボディの終了位置を知ることができます。
しかし、以下のような場合にはContent-Length
を指定するのが難しいです。
✅ 動的に生成されるコンテンツ
✅ ストリーミング形式でのレスポンス
このようなケースで役立つのがチャンク転送エンコーディングです!
仕組み
チャンク転送では、以下のようにデータを**チャンク(塊)**に分けて送信します。
- 各チャンクの先頭にチャンクサイズ(16進数)を記載
- チャンクサイズの後に改行(CRLF)
- チャンクのデータ本体
- チャンクの末尾にも改行(CRLF)
チャンク転送の終わりは、サイズ0
のチャンクを送信することで示されます。
例
以下はチャンク転送のサンプルです。
HTTP/1.1 200 OK
Transfer-Encoding: chunked
4\r\n
Wiki\r\n
5\r\n
pedia\r\n
E\r\n
in\r\n
\r\n
chunks.\r\n
0\r\n
\r\n