Сценарий:Browser (Chrome) не кэш активов от CloudFront
Я настроить CloudFront distribuition из пользовательского происхождения (мой сервер) потока в прогрессивный список mp4 видео файлов.
Эти файлы зацикливаются и воспроизводятся через родной HTML5 видеоролик HTML5. Каждый раз, когда видео заканчивается, Chrome делает другой запрос к файлу.
При воспроизведении файла с моего сервера, Chrome возвращает
Status Code:206 Partial Content (from cache)
на каждом запросе, в то время как при воспроизведении одного файла из CloudFront, Chrome никогда не кэширует файл и сохраняет его загрузку при каждом запросе!
Эти заголовки ответа от Amazon CloudFront в Chrome:
HTTP/1.0 206 Partial Content
Date: Mon, 19 Mar 2012 19:47:44 GMT
Server: Apache
Last-Modified: Mon, 19 Mar 2012 12:35:37 GMT
ETag: "a78e87ba-335d8e-4bb97cb9f887f"
Accept-Ranges: bytes
Content-Type: video/mp4
Content-Range: bytes 4228-3366285/3366286
Content-Length: 3362058
Age: 3819
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: xxxxxx
Via: 1.0 xxxxxx.cloudfront.net (CloudFront)
Connection: keep-alive
Response Headers в Chrome того же файла с моего сервера (происхождение):
HTTP/1.1 206 Partial Content
Date: Mon, 19 Mar 2012 20:50:40 GMT
Server: Apache
Last-Modified: Mon, 19 Mar 2012 12:35:37 GMT
ETag: "a78e87ba-335d8e-4bb97cb9f887f"
Accept-Ranges: bytes
Content-Length: 3366286
Content-Range: bytes 0-3366285/3366286
Keep-Alive: timeout=2, max=256
Connection: Keep-Alive
Content-Type: video/mp4
ли я что-то отсутствует?
Возможно, причина в отсутствии заголовка Keep-Alive
от ответа CloudFront? или, возможно, в другой версии протокола HTTP (1.0 против 1.1)?
UPDATE:
Я также добавил Истекает и Cache-Controls заголовки, ничего не изменилось. Это печально делает довольно бесполезнымопасно сочетает HTML5 видео api и Amazon CloudFront.
Скриншот из инспектора, как вы можете увидеть файл повторно загружены на каждом цикле: http://i.imgur.com/0VyZD.jpg
Это еще один скриншот с загруженного файла с локального сервера: http://i.imgur.com/go1zN.jpg
UPDATE 2:
Это, похоже, не строго связано с CloudFront. После различных тестов, кажется, Chrome не кэшировать видео, если
1) файл не больше, чем 2Мб 2) Заголовок Content-Range
не начинается с 0 (см дифферент пример выше)
И я думаю, это связано только с собственным API-интерфейсом HTML5 и его статусом частичного контента 206.
FTR, сообщили AWS CF в https://forums.aws.amazon.com/thread.jspa?threadID=96247 – Ami
Есть ли способ обхода на стороне клиента для этого? Ненавижу, как все мои видео не будут кэшироваться. –
См. Также: https://forums.aws.amazon.com/thread.jspa?threadID=124998 –