Varnish 4を使用して、有効なContent-Length
ヘッダーとヘッダーなしで応答する一連のバックエンドがありますTransfer-Encoding
。
クライアントからの最初のヒットで、これらのヘッダーでクライアントに応答するのではなく、Varnish はヘッダーを削除して応答Content-Length
に追加します。Transfer-Encoding: chunked
(興味深いことに、ペイロードにはチャンクが含まれていないようです。これは 1 つの連続したペイロードです)。
Content-Length
これは、ヘッダーに基づいてセグメント サイズ、帯域幅などの分析を行おうとする Flash ビデオ プレーヤーなどのクライアントに深刻な問題を引き起こします。彼らの分析は失敗し、マルチビットレートのストリーミングなどを行うことはできません。
私は次のようないくつかの半明白なことを試しました:
beresp.do_stream = true
beresp.do_gzip = false
unset req.http.Accept-Encoding
サンプル バックエンド レスポンス:
HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 19:44:35 GMT
Server: Apache
Content-Length: 796618
Connection: keep-alive
ワニスの応答例:
HTTP/1.1 200 OK
Server: Apache
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 23:10:06 GMT
X-Varnish: 2
Age: 0
Transfer-Encoding: chunked
Accept-Ranges: bytes
オブジェクトの後続のロードでは、キャッシュへの最初のロードではなく、ヘッダーが含まれます。Content-Length
VCL: https://gist.github.com/onethumb/e64a405cc579909cace1
varnishlog 出力: https://gist.github.com/onethumb/e66a2bc4727a3a5340b6