I have a bunch of html5 video elements, with their preload attribute set to "auto". They start loading just fine, but I think there might be a problem with their caching, because each time I reload the page (without clearing the cache), they start all over again.
When I checked the Network panel in firebug, I noticed everything else (images and files) was giving me a "304 not modified" message as espected, while the videos (and audio) files were giving me a "206 partial content" message, in duplicated entries.
The "206 partial content" response also appears in duplicated entries when the page is loaded with the cache cleared, instead of a "200 OK" response, as it would be expected.
Is this a normal behavior for video and audio elements? If not, how could it be corrected?
In firefox on my local development machine I couldn't get .webm videos to play unless the server was configured to use them. Firebug would show 206 but nothing would show. This can be as resolved by adding
AddType video/webm .webm
to your .htaccess.
This Partial Content code (206) may be sent from the server when the client has asked for a range (e.g. "give me the first 2MB of video data").
It is vital for downloading data in chunks which avoids fetching unused resources. (I seldom watch a full video online.) Look at the outgoing request for a
Range
header.See Status Codes (RFC2616 - HTTP/1.1) (note that any 2xx code means "Success"):
And from the Range header section:
I do not understand the intricicies of caching and/or ETags or what to expect in FireFox, however.
According to https://httpstatuses.com/206
"A server MUST NOT generate a multipart response to a request for a single range, since a client that does not request multiple parts might not support multipart responses. However, a server MAY generate a multipart/byteranges payload with only a single body part if multiple ranges were requested and only one range was found to be satisfiable or only one range remained after coalescing. A client that cannot process a multipart/byteranges response MUST NOT generate a request that asks for multiple ranges.
When a multipart response payload is generated, the server SHOULD send the parts in the same order that the corresponding byte-range-spec appeared in the received Range header field, excluding those ranges that were deemed unsatisfiable or that were coalesced into other ranges. A client that receives a multipart response MUST inspect the Content-Range header field present in each body part in order to determine which range is contained in that body part; a client cannot rely on receiving the same ranges that it requested, nor the same order that it requested."