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