У меня есть автономное приложение HTML5, выполняющее следующие действия:
- отображать страницу
- проверить манифест (согласно спецификациям)
- выполните запрос ajax (используя Prototype), чтобы проверить, находится ли он в сети.
У меня есть следующая проблема ТОЛЬКО на Mobile Safari iOS (не Safari, не Chrome, не Firefox):
- ОК: запустить сценарий онлайн
- OK: запустить сценарий в автономном режиме (режим полета)
- ОК: Остановить сервер ОК
- КО: перезапустить сервер
Ajax-запрос выполняется, но зависает до истечения времени ожидания, как если бы он был в автономном режиме
Обходной путь
- ОК: если я обновлю манифест, кеш обновится
- ОК: если я очистил кеш в настройках iOS
- КО: Если я добавлю параметр в ajax-запрос (например, ?d={timemillis} )
- KO: запрос ajax находится в POST
- KO: Запрос имеет заголовки: Cache-Control: no-store и Pragma: no-cache
- КО: Если я убью MobileSafari и перезагружу
- KO: часть NETWORK манифеста имеет явный URL-адрес
Вот и не знаю что делать:
- Я не могу очистить мобильное хранилище Safari, потому что оно также очищает localStorage
- Я не могу "прикоснуться" к файлу манифеста на сервере
- Я не могу быть уверен, что мой пользователь всегда будет в «режиме полета».
Вопрос:
- Есть ли способ принудительно обновить кеш? (согласно спецификациям нет)
- Есть ли способ запретить кэширование Ajax-запроса? (кроме манифеста)
- Есть ли какой-нибудь jsFiddle, демонстрирующий, что он работает на iOS?
Наилучшие пожелания