使用Varnish 4,我有一组后端,它们响应有效的Content-Length
标头而没有Transfer-Encoding
标头.
在客户端的第一次点击中,Varnish正在删除Content-Length
标题并添加Transfer-Encoding: chunked
到响应中,而不是使用这些标头响应客户端.(有趣的是,有效载荷似乎没有任何块 - 它是一个连续的有效载荷).
这会给像Flash视频播放器这样的客户端造成严重问题,这些客户端正试图根据Content-Length
标头进行分段大小,带宽等分析.他们的分析失败了,他们不能做多比特流等等.
我尝试过一些半明显的事情,比如:
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
Varnish Trac:https://www.varnish-cache.org/trac/ticket/1506