wake-up-neo.com

Warum zeigt Firebug bei einer Video-Ladeanforderung die Antwort "206 Partial Content" an?

Ich habe eine Reihe von HTML5-Videoelementen, deren Preload-Attribut auf "auto" gesetzt ist. Sie starten das Laden ganz gut, aber ich denke, es könnte ein Problem mit dem Zwischenspeichern geben, da sie jedes Mal von vorne beginnen, wenn ich die Seite neu lade (ohne den Cache zu leeren).

Als ich das Netzwerkbedienfeld in Firebug überprüfte, bemerkte ich, dass alles andere (Bilder und Dateien) wie erwartet die Meldung "304 nicht geändert" ausgab, während die Videodateien (und Audiodateien) die Meldung "206 Teilinhalte" ausgaben. in doppelten Einträgen.

Die Antwort "206 Teilinhalt" wird auch in doppelten Einträgen angezeigt, wenn die Seite mit geleertem Cache geladen wird, anstatt wie erwartet eine Antwort "200 OK".

Ist dies ein normales Verhalten für Video- und Audioelemente? Wenn nicht, wie könnte es korrigiert werden?

17
CCrawler

Dieser Teilinhaltscode (206) kann wird vom Server gesendet, wenn der Client nach einem Bereich gefragt hat (z. B. "Gib mir die ersten 2 MB Videodaten").

Das Herunterladen von Daten in Blöcken ist unerlässlich, um das Abrufen nicht verwendeter Ressourcen zu vermeiden. (Ich schaue selten ein vollständiges Video online an.) Sehen Sie sich die ausgehende Anforderung für einen Range-Header an.

Siehe Statuscodes (RFC2616 - HTTP/1.1) (Beachten Sie, dass beliebig 2xx-Code "Erfolg" bedeutet):

10.2.7 206 Teilinhalt:

Der Server hat die teilweise GET-Anforderung für die Ressource erfüllt. Die Anfrage MUSS enthält ein Range-Header-Feld (Abschnitt 14.35), das den gewünschten Bereich angibt , und KANN ein If-Range-Header-Feld (Abschnitt 14.27) enthalten, um die Anfrage von Bedingungen abhängig zu machen.

Und aus dem Range Header Abschnitt:

If Der Server unterstützt den Range-Header. and Der angegebene Bereich oder die angegebenen Bereiche sind für die Entität geeignet

  • Das Vorhandensein eines Range-Headers in einem unbedingten GET ändert, was zurückgegeben wird, wenn das GET ansonsten erfolgreich ist. Mit anderen Worten trägt die Antwort einen Statuscode von 206 (Teilinhalt) anstelle von 200 (OK) .

Ich verstehe jedoch nicht die Feinheiten von Caching und/oder ETags oder was in FireFox zu erwarten ist.

16
user166390

In Firefox auf meinem lokalen Entwicklungscomputer konnten keine .webm-Videos abgespielt werden, es sei denn, der Server war für deren Verwendung konfiguriert. Firebug würde 206 anzeigen, aber nichts würde angezeigt. Dies kann durch Hinzufügen behoben werden

AddType video/webm .webm

zu Ihrem .htaccess.

1
Titan

Laut https://httpstatuses.com/206

"Ein Server DARF KEINE mehrteilige Antwort auf eine Anforderung für einen einzelnen Bereich generieren, da ein Client, der nicht mehrere Teile anfordert, möglicherweise keine mehrteiligen Antworten unterstützt. Ein Server KANN jedoch eine mehrteilige/byteranges-Nutzlast mit nur einem einzigen Körperteil generieren, wenn Es wurden mehrere Bereiche angefordert und nach dem Zusammenführen wurde nur ein Bereich als zufriedenstellend befunden oder es blieb nur ein Bereich übrig.Ein Client, der keine mehrteilige/byteranges-Antwort verarbeiten kann, DARF KEINE Anforderung generieren, die mehrere Bereiche anfordert.

Wenn eine mehrteilige Antwortnutzlast generiert wird, SOLLTE der Server die Teile in derselben Reihenfolge senden, in der die entsprechende Byte-Bereichsspezifikation im Feld für den empfangenen Bereichskopf angezeigt wurde, mit Ausnahme der Bereiche, die als nicht zufriedenstellend eingestuft wurden oder die in anderen Bereichen zusammengefasst wurden. Ein Client, der eine mehrteilige Antwort erhält, MUSS das in jedem Körperteil vorhandene Inhaltsbereich-Headerfeld untersuchen, um festzustellen, welcher Bereich in diesem Körperteil enthalten ist. Ein Client kann sich nicht darauf verlassen, dass er die gleichen Bereiche erhält wie er. "

0
bowen wang