2012-03-19 22 views
8

Scenariusz:Browser (Chrome) dokonuje przeglądu aktywów nie cache z CloudFront

I Skonfiguruj distribuition CloudFront z niestandardowym pochodzenia (mój serwer) do progresywnego strumienia lista plików wideo MP4.

Te pliki są zapętlone i odtwarzane przez interfejs API natywnego interfejsu HTML5 Chrome. Za każdym razem, gdy film się kończy, Chrome przesyła kolejne żądanie do pliku.

Podczas odtwarzania pliku z mojego serwera, Chrome zwraca

Status Code:206 Partial Content (from cache) 

na każde żądanie, podczas gdy gra ten sam plik z CloudFront, Chrome nigdy nie buforuje plik i utrzymuje go przy każdym pobraniu życzenie!

Są nagłówki odpowiedzi od Amazon CloudFront w 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 Nagłówki w Chrome z tego samego pliku z mojego serwera (pochodzenie):

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 

Am I czegoś brakuje? Może być przyczyną braku nagłówka Keep-Alive z odpowiedzi CloudFront? a może w innej wersji protokołu HTTP (1.0 vs 1.1)?

UPDATE:

Dodałem też wygasa i Cache-Sterowanie nagłówki, nic się nie zmieniło. To niestety sprawia, że ​​niezauważalne jest łączenie API api HTML5 i Amazon CloudFront.

Zrzut ekranu od inspektora, jak widać plik zostanie ponownie pobrane na każdej pętli: http://i.imgur.com/0VyZD.jpg

To kolejny zrzut ekranu z załadowanego pliku z serwera lokalnego: http://i.imgur.com/go1zN.jpg

UPDATE 2:

Wygląda na to, że nie jest to ściśle związane z CloudFront. Po różnych próbach wydaje Chrome nie buforuje film jeśli

1) plik jest większy niż 2Mb 2) Nagłówek Content-Range nie zaczynają się od 0 (patrz zróżnicowanych przykład powyżej)

I myślę dotyczy tylko natywnego interfejsu API wideo HTML5 i jego statusu częściowej zawartości 206.

Odpowiedz

8

Od odpowiedź CloudFront:

HTTP/1.0 206 Partial Content

HTTP/1.0 nie zawiera 206 kod odpowiedzi (który został dodany w HTTP/1.1), więc cache Chrome warstwa odmawia ponownego użycia odpowiedzi. Więcej szczegółowych informacji o chrome w http://crbug.com/128116, ale krótka odpowiedź brzmi, że CloudFront powinien obsłużyć 206 odpowiedzi jako HTTP/1.1, a nie /1.0.

+0

FTR, zgłoszone do AWS CF w https://forums.aws.amazon.com/thread.jspa?threadID=96247 – Ami

+2

Czy istnieje sposób obejścia tego problemu po stronie klienta? Nienawidzę, jak wszystkie moje filmy nie będą przechowywane w pamięci podręcznej. –

+0

Zobacz także: https://forums.aws.amazon.com/thread.jspa?threadID=124998 –

2

Nie określono określonego nagłówka wygasania/bufora podręcznego. Chrome może być naprawdę szczególny jeśli chodzi o buforowanie elementów (zwłaszcza gdy są one dynamicznie dodawane do DOM poprzez javascript), jeśli nie podano nagłówka wygasania.

http://code.google.com/speed/page-speed/docs/caching.html

z google:

Ważne jest, aby określić jeden z Expires lub Cache-Control max-age, a jeden z Last-Modified lub ETAG, dla wszystkich zasobów Cacheable. Redundantne jest określenie zarówno Expires, jak i Cache-Control: max-age lub określenie Last-Modified i ETag.

+0

Dzięki, dodam nagłówek Expires i spróbuję. Jednak nadal nie mogę zrozumieć, dlaczego Chrome buforuje plik z mojego serwera, a nie z Cloudfront. – achairapart

+0

Czy inne elementy w pliku są takie same, gdy są podawane zarówno z serwera lokalnego, jak iz Amazon? być może heurystyka buforowania ocenia, co należy zrobić inaczej dla tego pliku, w oparciu o sąsiednie treści zawarte w nim. – javram

+0

Wygasło nagłówki dodane, nic się nie zmieniło. Inne obiekty mają to samo zachowanie. Podejrzewam, że jest to coś ze stanem częściowej zawartości 206. Dodałem też zrzut ekranu z Chrome Inspector. – achairapart

Powiązane problemy