2013-11-07 2 views
9

У меня возникли проблемы с выяснением того, что мне нужно настроить для частичных ответов (206), чтобы Google Chrome и Firefox кэшировали данные байта, отправленные в браузер. Internet Explorer кажется доволен моими заголовками, благодаря тому, что я собираю, Chrome очень специфичен в отношении того, что представляет собой действительный ответ для кэширования.206 частичное не кэширование

фон:

я загружаю элемент для длительного видео, и я ищу к клипам в пределах того же видео. Когда я ищу между клипами и возвращаюсь к первому клипу ... вместо того, чтобы играть в кешированные данные, он снова запрашивает данные с сервера в другом запросе 206.

Вот заголовки из одного из этих reuests:

Request URL:http://localhost:51202/Stream/StreamVideo?videoFileGuid=e824795d-18af-43cb-935d-b793dbbe36fb 
Request Method:GET 
Status Code:206 Partial Content 

Request Headers 
GET /Stream/StreamVideo?videoFileGuid=e824795d-18af-43cb-935d-b793dbbe36fb HTTP/1.1 
Host: localhost:51202 
Connection: keep-alive 
Accept-Encoding: identity;q=1, *;q=0 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/30.0.1599.101 Safari/537.36 
Accept: */* 
Referer: http://localhost:52309/Playlists/Playlist/ViewPlaylist?playlistGuid=165deee2-e5d3-435c-ac19-f2f7357cf6d2 
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 
Cookie: .ASPXAUTH=<snip> 
Range: bytes=463809580- 
Query String Parameters 
videoFileGuid=e824795d-18af-43cb-935d-b793dbbe36fb 

Response Headers 
HTTP/1.1 206 Partial Content 
Cache-Control: public 
Content-Length: 421590265 
Content-Type: video/mp4 
Content-Range: bytes 463809580-885399845/885399846 
Expires: Thu, 14 Nov 2013 08:54:30 GMT 
Last-Modified: Fri, 01 Nov 2013 14:33:04 GMT 
Accept-Ranges: bytes 
ETag: 515e8d9b-87f4-4e49-ac64-17c33e091b4a 
Server: Microsoft-IIS/8.0 
X-AspNetMvc-Version: 4.0 
Content-Disposition: inline; filename="StreamVideo" 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =<snip> 
X-Powered-By: ASP.NET 
Date: Thu, 07 Nov 2013 08:54:46 GMT 
X-Powered-By:ASP.NET 
X-SourceFiles:=<snip> 

Любые идеи?

В Internet Explorer я вижу, что запрос включает значения «If-Unmodified-Since» и «If-Match», которые я обрабатываю на сервере. Однако Chrome не включает их в заголовок запроса? Я полагаю, потому что исходный ответ не дал ему что-то, что необходимо для кэширования контента в первую очередь.

IE Заголовки:

Key   Value 
Request   GET /Stream/StreamVideo?videoFileGuid=e824795d-18af-43cb-935d-b793dbbe36fb HTTP/1.1 
Accept   */* 
If-Unmodified-Since Fri, 01 Nov 2013 14:33:04 GMT 
If-Match  515e8d9b-87f4-4e49-ac64-17c33e091b4a 
Range   bytes=884228096-885399845 
User-Agent  Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
Referer   <myURL> 
GetContentFeatures.DLNA.ORG 1 
Pragma   getIfoFileURI.dlna.org 
Accept-Language  en-ZA 
Accept-Encoding  gzip, deflate 
Host   <myHost> 
DNT   1 
Connection  Keep-Alive 
+0

Любой успех? Вы нашли ответ? – Matyas

+0

Возможный дубликат [браузер Chrome не отправляет if-modified-since с заголовка на сервер] (http://stackoverflow.com/questions/8294034/chrome-browser-is-not-sending-if-modified-since-header- to-server) –

+0

Любые обновления по этому вопросу? Я также не могу заставить кешировать работу для частичного содержимого 206 в Chrome и Firefox. –

ответ

0

Я не знаю точное состояние этого в 2017 году (вопрос был с 2013 года), но, по крайней мере, сегодня вы можете быть в состоянии осуществить это с помощью работников сервиса. Работники службы позволяют перехватывать запросы и отправлять ответы в рамках js-процесса без фактического перехода на сервер на основе вашей собственной логики кэширования.

Так что, хотя это не является прямым решением вашей проблемы, это может быть жизнеспособным обходным решением.

Смежные вопросы