Dall'aggiornamento a iOS 6, vediamo la vista Web di Safari prendere la libertà di effettuare $.ajax
chiamate nella cache . Questo è nel contesto di un'applicazione PhoneGap, quindi utilizza Safari WebView. Le nostre $.ajax
chiamate sono POST
metodi e la cache è impostata su false {cache:false}
, ma continua a succedere. Abbiamo provato ad aggiungere manualmente un TimeStamp
alle 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 TimeStamp
parametro 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!