Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
что такое файлы MANIFEST.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
310.08 Кб
Скачать

Скрытая проблема обновления

Браузер Mozilla Firefox имеет «своеобразный» механизм обновления кэша, известный как «агрессивное кэширование». Проблема проявляется, когда мы совмещаем стандартное кэширование и Application Cache, а нам их совмещать необходимо, если мы хотим иметь кэширование в старых браузерах.  Дело в том, что при обновлении Application Cache в Mozilla Firefox данные также берутся из стандартного кэша без проверки изменений на сервере. Это приводит к тому, что в обновлённый Application Cache могут попасть устаревшие данные из стандартного кэша, т.е. обновление будет выполнено, но в кэше будут находиться старые версии файлов. Данный факт ставит все преимущества работы с Application Cache под сомнение.  Корректными способами обновления кэша в такой ситуации являются:

  • изменение имени файла;

  • 2-хступенчитое обновление.

В первом случаи мы просто меняем имя измененного файла во всех ресурсах, где он упоминается, в том числе и файле .manifest. Файла с первоначальным именем существовать не должно(!). В результате при очередной проверке изменения произойдёт ошибка загрузки несуществующего файла, и ресурсы кэша будут загружены с сервера. Если вариант с изменением имени файла не подходит в силу тех или иных причин, то необходимо воспользоваться 2-хступенчитым обновлением кэша. На первом этапе обновления мы исключаем изменённый файл из раздела CACHE файла .manifest и устанавливаем в заголовке отдаваемого файла старевший срок годности:

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

header('Cache-Control: no-store, no-cache, must-revalidate');

header('Pragma: no-cache');

В результате у активных пользователей данный файл обновиться в стандартном кэше, а из Application Cache будет удалён. На втором этапе мы уже включаем измененный файл в раздел CACHE, и он успешно кэшируется. К сожалению, данное обновление коснется только активных пользователей, поэтому старайтесь использовать переименование файлов.

Привязка к домену

Ещё один важный момент, о котором нужно упомянуть – кэш привязан к домену, а не к странице, где объявлен файл .manifest. Сохранённые в кэше, ресурсы будут использоваться для всех страниц данного домена, даже если в них нет ссылки на файл .manifest. Это достаточно удобно – можно на стартовой странице определить кэшируемые ресурсы, а потом не беспокоится об их кэшировании на других страницах. Если же мы используем несколько разных файлов .manifest для разных страниц одного домена, то они будут перекрывать друг друга. В кэше будут храниться только те ресурсы, которые были указанны в последнем загруженном файле .manifest. Также при использовании нескольких файлов .manifest можно создать ситуацию, когда сохраняемые страницы циклически кэшируют друг друга. Возникновение такой ситуации приводит приложение в не рабочие состояние. Учитывая, выше написанное, следует отметить, что использовать несколько файлов .manifest непрактично и рискованно, хотя такая возможность существует. Из привязки к домену также следует, что Application Cache работает во фреймах, используя кэш домена фрейма. Этот момент по достоинству должны оценить разработчики игр.