После обновления до 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 часов, как я!