Wie deaktiviere ich 'Transfer-Encoding: chunked' encoding im Lack?

Mit Lack 4, habe ich eine Reihe von backends, die sind reagiert mit einem gültigen Content-Length header und kein Transfer-Encoding header.

Auf den ersten Treffer von einem client aus, vielmehr als Reaktion auf den client mit diesen Headern, Lack fallen die Content-Length header und hinzufügen Transfer-Encoding: chunked auf die Antwort. (Interessanterweise, die Nutzlast scheint nicht irgendwelche Brocken in es - es ist eine zusammenhängende payload).

Dies führt zu erheblichen Problemen für Kunden wie Flash-video-Player, die versuchen zu tun, segment-Größe, Bandbreite, etc Analyse basiert auf der Content-Length header. Ihre Analyse schlägt fehl, und Sie können nicht Dinge wie multi-bitrate-streaming, etc.

Habe ich versucht eine Reihe von semi-offensichtlichen Dinge wie:

  • beresp.do_stream = true
  • beresp.do_gzip = false
  • unset req.http.Accept-Encoding

Probe-backend-Reaktion:

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

Beispiel Lack Antwort:

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

Nachfolgender Belastung des Objekts tun einschließlich der Content-Length header, nicht nur der erste laden in den cache.

VCL: https://gist.github.com/onethumb/e64a405cc579909cace1

varnishlog Ausgabe: https://gist.github.com/onethumb/e66a2bc4727a3a5340b6

Lack Trac: https://www.varnish-cache.org/trac/ticket/1506

habe das problem auch, warten Sie für das update ohne Umgehung der streamer.

InformationsquelleAutor Don MacAskill | 2014-05-13

Schreibe einen Kommentar