С момента обновления до iOS 6 мы видим, что веб-просмотр Safari позволяет выполнять кеширование вызовов $.ajax
. Это в контексте приложения PhoneGap, поэтому оно использует Safari WebView. Наши вызовы $.ajax
- это методы POST
, и у нас установлен кеш в false {cache:false}
, но все же это происходит. Мы попытались вручную добавить TimeStamp
в заголовки, но это не помогло.
Мы провели больше исследований и обнаружили, что Safari возвращает только кэшированные результаты для веб-сервисов, у которых есть сигнатура функции, которая является статической и не изменяется от вызова к вызову. Например, представьте себе функцию, которая называется:
getNewRecordID(intRecordType)
Эта функция снова и снова вводит одни и те же параметры ввода, но возвращаемые данные должны быть разными каждый раз.
Должно быть, в спешке Apple, чтобы сделать iOS 6 zip впечатляюще, они слишком обрадовались настройкам кеша. Кто-нибудь еще видел это поведение на iOS 6? Если да, то что именно вызывает его?
Обходной путь, который мы обнаружили, заключался в том, чтобы изменить подпись функции таким образом:
getNewRecordID(intRecordType, strTimestamp)
а затем всегда передавать параметр TimeStamp
и просто отбрасывать это значение на стороне сервера. Это работает вокруг проблемы. Надеюсь, это поможет другой бедной душе, которая тратит 15 часов на этот вопрос, как я!