Манифест поведения в хроме не стабилен - PullRequest
0 голосов
/ 27 января 2011

У вас когда-нибудь был манифест HTML-кэша, работающий как положено в Chrome? Я собрал небольшой проект, и, видимо, он не работает хорошо. Работает-иш!

Я создал HTML-страницу примерно так:

<html manifest="cache.manifest">
<body>
 test - <img src="img1.jpg" width="100" height="100">
</body>
</html>

Манифест, подобный этому:

CACHE MANIFEST
#V1.0.22
img1.jpg

NETWORK:
*

И 2 изображения в одной папке: img1.jpg и img2.jpg.

Когда я меняю изображения местами img2 => img1 и обновляю номер версии моего манифеста, Chrome загружает новую версию и отправляет событие готовности к обновлению. Когда я перезагружаю страницу, я получаю второе изображение на экране, что и ожидается. Хотя если я перезаписываю img1 исходным изображением, обновляю номер версии в манифесте и перезагружаюсь, Chrome загружает новый манифест и новый файл, но даже если я обновляю страницу снова и снова, она не отображает правильное изображение! ! Если я очищу кеш в тот момент, я получу правильный, который я тоже ожидал бы. Я сделал 10 раз, и это не работает. Это сводит меня с ума! Кажется, замена кеша не работает должным образом!

Если у вас есть подсказка об этом, пожалуйста, скажите мне. Я даже могу прислать вам мои файлы по электронной почте, если хотите.

Приветствие.

1 Ответ

0 голосов
/ 27 июня 2012

Вероятно, это плохое взаимодействие между кэшированием cache.manifest и обычным кэшированием в браузере. При использовании cache.manifest ваш браузер также следует обычным правилам кэширования в ваших заголовках http Так что получается, что вы подаете изображение вверх, а его заголовок говорит, что можно кэшировать его несколько часов или дней. Он также кэшируется с помощью cache.manifest. Вы обновляете свое изображение на сервере и меняете номер версии cache.manifest. Браузер видит изменение версии, очищает cache.manifest и снова запрашивает изображение как обычно. Но, как обычно, при запросе изображения он сначала проверяет кеш браузера и вытаскивает старое изображение оттуда, а не захватывает его на сервере. Затем он вставляет это старое изображение обратно в cache.manifest. Таким образом, даже после истечения времени кэширования изображения в кэше браузера изображение все равно не будет обновляться, поскольку теперь оно снова кэшируется в cache.manifest.

Короче говоря, cache.manifest и обычное кэширование в браузере создают действительно ужасную комбинацию, поэтому вам нужно отключить кэширование в браузере для всего, что вы помещаете в файл cache.manifest. Вы можете сделать это на своем сервере, изменив заголовки кэша.

...