Я занимаюсь разработкой довольно сложного веб-приложения HTML5
за последний месяц. Вчера вечером мой iPhone
внезапно решил кэшировать все JS, CSS и изображения и не загружать обновленные копии. Это случилось и с моим партнером iPhone
, поэтому я собираюсь предположить, что это затрагивает всех пользователей нашего приложения.
Излишне говорить, что очистка кеша браузера, удаление веб-приложения, перезагрузка телефона и перезапуск беспроводного соединения ничего не делают, чтобы исправить эту проблему.
Удаление <meta name="apple-mobile-web-app-capable" content="yes">
решает проблему, но создает новую проблему, так как нам нужно, чтобы приложение запускалось как... приложение.
Мы не собираемся добавлять старый трюк ?number
в конец всех наших скриптов, таблиц стилей и изображений. Это смешно. Также - если бы мы реализовали что-то подобное, это должно было быть своего рода динамической реализацией JS. Наше приложение представляет собой одну HTML-страницу, которая загружает большинство сценариев, а дополнительные страницы - AJAXed, дополнительные данные также получают через AJAX. Я думаю, это можно сделать, но я надеюсь на более элегантное решение. Я знаю, я чувствую, что мне не нужно ничего делать, так как все это работало без сучка и надолго целый месяц.
Использование тегов cache-control
, expires
и pragma
<meta>
тоже не приносит нам пользы, так как это просто проблема веб-приложения iOS. Кэширование работает обычно в мобильных Safari, мобильных Chrome и всех настольных браузерах. Похоже, что у iOS есть отдельный кеш для приложений, включая веб-приложения, которые пользователь не может очистить.
Кажется, что многие пользователи SO столкнулись с этой проблемой, но я не могу найти удовлетворительных решений. Кто-нибудь там, в подобной ситуации, решил эту проблему? Могу ли я использовать файл манифеста, чтобы указать, чтобы не кэшировать несколько файлов? Кажется, что файлы манифеста используются для противоположного.