Должны ли повторные проверки заголовков этого запроса неправильно? - PullRequest
3 голосов
/ 16 мая 2011

Я заметил, что Chrome кэшировал видеофайл.Я заменил его другим на сервере, и Chrome продолжал обслуживать старый из кэша (используя JW flash player 5)

Заголовки запроса выглядят так:

joe@joe-desktop:~$ wget -O - -S --spider http://www.2xfun.de/files_geheimhihi14/20759.mp4
Spider mode enabled. Check if remote file exists.
--2011-05-15 22:40:56--  http://www.2xfun.de/files_geheimhihi14/20759.mp4
Resolving www.2xfun.de... 213.239.214.112
Connecting to www.2xfun.de|213.239.214.112|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Date: Sun, 15 May 2011 20:40:56 GMT
  Server: Apache
  Last-Modified: Sun, 15 May 2011 20:37:59 GMT
  ETag: "89b38-3bb227-4a35683b477c0"
  Accept-Ranges: bytes
  Content-Length: 3912231
  Cache-Control: max-age=29030400, public, must-revalidate
  Expires: Sun, 15 Apr 2012 20:40:56 GMT
  Connection: close
  Content-Type: video/mp4
Length: 3912231 (3.7M) [video/mp4]
Remote file exists.

IЯ использую mod_headers и mod_expires в apache2 следующим образом:

<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4)$">
ExpiresDefault A29030400
Header append Cache-Control "public, must-revalidate"
</FilesMatch>

Правильно ли я произвел повторную проверку правильности или что-то в этом роде?

edit:

Чтобы сделать пример использования понятным: я хочуфайлы для кэширования, потому что они довольно большие, и я хочу сохранить пропускную способность.Но с другой стороны, я хочу, чтобы файлы были повторно проверены.Таким образом, клиент выполняет запрос HEAD и проверяет, изменился ли контент (вот для чего предназначен этот etag), и выполняет повторную выборку только при необходимости.

1 Ответ

6 голосов
/ 24 октября 2011

Ваша проблема заключается в том, что обязательная повторная проверка возможна только после того, как запись в кэше больше не актуальна, но вы пометили ответ как кешируемый в течение 29 миллионов секунд.«Cache-Control: max-age = 0, must-revalidate» может быть ближе к тому, что вы хотите, если вы хотите разрешить кэширование, но требует повторной проверки при каждом использовании.

...