Браузеры HTML5 зависают от кэшированного файла манифеста

Я использую кэш приложений HTML5, и в основном он работает хорошо. Однако иногда браузеры пользователей (Chrome или Safari) сохраняют кешированный файл манифеста, даже если я уверен, что на сервере есть совершенно новый файл манифеста с уникальным номером версии внутри комментария (например, «# версия приложения 1.0.0.8" или любой другой).

В IIS (версия 6) срок действия содержимого был установлен на 1 день, может ли быть проблема в этом? Кажется, я не могу воспроизвести эту проблему, что затрудняет отладку. В качестве меры предосторожности в IIS я изменил срок действия содержимого на «срок действия немедленно» для каталога, в котором хранится файл манифеста. Может ли это объяснить, почему некоторые браузеры зависали от файлов манифеста, даже когда была доступна новая версия?

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

Спасибо,

Энди


person Andy    schedule 03.08.2012    source источник


Ответы (1)


Взято из моего ответа здесь: https://stackoverflow.com/a/13282735/727575

Да, это текущее «правильное» поведение. Это не имеет ничего общего с истечением срока действия содержимого IIS. Вот что происходит:

Когда вы только что внесли изменения в файл манифеста и обновили браузер, вот что происходит (при условии, что вы в сети)

  • браузер сначала загружает обратно все файлы в кеше
  • затем браузер проверяет онлайн ваш файл манифеста
  • он обнаруживает, что файл манифеста изменился, затем он переходит к загрузке новых файлов
  • однако имейте в виду, что в это время вы все еще будете просматривать свои «старые файлы», потому что браузер загрузил старые файлы, прежде чем выходить в интернет для загрузки «новых файлов».
  • если в этот момент, если вы снова нажмете «Обновить» (второй раз), вы должны получить «новые файлы»
  • В настоящее время это стандартное поведение. Некоторые люди помещают некоторые обработчики событий, чтобы предложить пользователю выполнить еще одно обновление (после 1-го обновления).

Таким образом, вам нужно дважды обновить или выбросить одно из событий из «window.applicationCache», чтобы обработать его.

Чтобы посмотреть пример использования window.applicationCache, перейдите сюда: http://www.html5rocks.com/en/tutorials/appcache/beginner/

это в разделе «Обновление кеша».

person Harvey Darvey    schedule 08.11.2012