З моменту оновлення до iOS 6, ми бачимо, що веб-перегляд Safari може вільно кешувати $.ajaxдзвінки. Це в контексті програми PhoneGap, тому він використовує Safari WebView. Наші $.ajaxвиклики - це POSTметоди, і кеш-пам'ять встановлена на помилкову {cache:false}, але все-таки це відбувається. Ми намагалися вручну додати TimeStampзаголовки, але це не допомогло.
Ми провели більше досліджень і виявили, що Safari повертає лише кешовані результати для веб-служб, які мають підпис функції, який є статичним і не змінюється від виклику до виклику. Наприклад, уявіть функцію, яка називається щось на зразок:
getNewRecordID(intRecordType)
Ця функція отримує однакові вхідні параметри знову і знову, але дані, які вона повертає, повинні бути різними щоразу.
Повинно бути в поспіху Apple, щоб зробити iOS 6 zip вражаюче, вони надто задоволені налаштуваннями кешу. Хтось ще бачив таку поведінку на iOS 6? Якщо так, то що саме це викликає?
Ми знайшли рішення, щоб змінити функцію підпису таким чином:
getNewRecordID(intRecordType, strTimestamp)
а потім завжди передайте TimeStampпараметр і просто відкиньте це значення на стороні сервера. Це вирішує проблему. Я сподіваюся, що це допомагає іншій бідній душі, яка витрачає 15 годин на це питання, як я!