iOS6 — есть ли способ очистить кешированные запросы ajax POST для веб-приложения, добавленного на главный экран?

Кэширование запросов ajax POST в iOS6 становится огромной проблемой для нашего веб-приложения. Большинство наших пользователей добавили приложение на главный экран. С момента обновления большинство POST-запросов к серверной части не работают, а данные устарели более 6 дней назад и продолжают расти. Нам известны два обходных пути для решения этой проблемы: один — изменить каждый запрос POST так, чтобы он отличался, добавив к нему метку времени или какой-либо случайный ввод, а второй — отключить кэширование на веб-сервере.

Оба обходных пути подробно описаны в следующем сообщении: Кэширует ли Safari на iOS 6 результаты $.ajax?< /а>

Отключение кэширования на веб-сервере решило бы проблему, если бы оно было установлено до обновления iOS6 (или сразу после). Однако похоже, что любые POST-запросы, которые были сделаны после обновления и до момента, когда мы отключили кэширование приложений, добавленных на главный экран, все еще кэшируются! и мы не можем найти способ очистить их. удаление приложения на главном экране и перезагрузка устройства не помогают! Единственный вариант, который у нас есть, — это изменить наш URL-адрес или добавить временную метку к каждому запросу в дополнение к отключению кэширования на веб-сервере.

Кто-нибудь знает способ очистить кэш приложений на главном экране, кроме восстановления заводских настроек? пожалуйста, предоставьте подробности.

Предупреждение всем, кто реализовал обходной путь, добавив метку времени к своим запросам, не отключая кэширование на сервере. Если ваше приложение добавлено на главный экран, КАЖДЫЙ ответ на сообщение теперь будет кэшироваться, и срок его действия не истечет. Если у кого-то нет способа очистить его, это выглядит как потенциальная утечка памяти!


person fbader    schedule 28.09.2012    source источник
comment
Кэширование iOS6 явно противоречит спецификациям HTTP (см. mnot.net/blog/ 24.09.2012/caching_POST). Не ожидайте, что это будет в 6.01.   -  person Alnitak    schedule 28.09.2012
comment
Это действительно противоречит спецификациям, но я полностью ожидаю, что это все еще будет в 6.01, поскольку Apple не признала ошибку и, вероятно, просто предположит, что люди исправят ее сами, и они смогут сохранить свое хорошее улучшение производительности. Грр.   -  person Kieran    schedule 05.10.2012


Ответы (1)


По моему опыту, единственный способ последовательно решить эту проблему с кешем — это использовать подход Google и добавить идентификатор для каждого запроса в URL-адрес. Затем вы можете использовать mod_rewrite или другой подобный движок для своего сервера, чтобы сделать это прозрачным для ваших внутренних сценариев.

person Reid Johnson    schedule 05.10.2012
comment
Согласованный. Добавьте идентификатор для каждого запроса (сохраните его в сеансе), срок действия которого истекает после получения данных публикации. При желании вы можете добавить это как скрытый элемент формы вместо параметра URL, но в любом случае это сработает. - person Alex K; 18.10.2012