Dall'aggiornamento a iOS 6, vediamo la vista Web di Safari prendere la libertà di effettuare $.ajaxchiamate nella cache . Questo è nel contesto di un'applicazione PhoneGap, quindi utilizza Safari WebView. Le nostre $.ajaxchiamate sono POSTmetodi e la cache è impostata su false {cache:false}, ma continua a succedere. Abbiamo provato ad aggiungere manualmente un TimeStampalle intestazioni ma non ha aiutato.
Abbiamo fatto ulteriori ricerche e abbiamo scoperto che Safari sta solo restituendo risultati memorizzati nella cache per i servizi Web che hanno una firma di funzione che è statica e non cambia da chiamata a chiamata. Ad esempio, immagina una funzione chiamata qualcosa del tipo:
getNewRecordID(intRecordType)
Questa funzione riceve ripetutamente gli stessi parametri di input, ma i dati che restituisce dovrebbero essere sempre diversi.
Deve essere nella fretta di Apple per rendere iOS 6 zip in modo impressionante e sono diventati troppo contenti delle impostazioni della cache. Qualcun altro ha visto questo comportamento su iOS 6? In tal caso, cosa lo sta causando esattamente?
La soluzione alternativa che abbiamo trovato è stata quella di modificare la firma della funzione in modo che fosse simile a questa:
getNewRecordID(intRecordType, strTimestamp)
quindi passa sempre anche un TimeStampparametro e scarta quel valore sul lato server. Questo risolve il problema. Spero che questo aiuti qualche altra povera anima che trascorre 15 ore su questo problema come ho fatto io!