З моменту оновлення до 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 годин на це питання, як я!