През последния месец разработвах доста сложно 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 са се сблъскали с този проблем, но не мога да намеря никакви задоволителни решения. Някой там в подобна ситуация разрешил ли е този проблем? Мога ли да използвам манифестен файл, за да укажа не за кеширане на няколко файла? Изглежда, че манифестните файлове се използват, за да направят обратното.