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