2012-09-28 10 views
9

iOS6 ajax Il caching delle richieste POST sta diventando un grosso problema per la nostra webapp. La maggior parte dei nostri utenti ha aggiunto l'app alla schermata principale. Fin dall'upgrade, la maggior parte delle richieste POST al back-end non funziona e i dati sono obsoleti da oltre 6 giorni e il conteggio. Siamo a conoscenza di due soluzioni per risolvere questo, uno è quello di cambiare ogni richiesta POST in modo che sia diverso aggiungendo un timestamp o un input casuale ad esso, e il secondo è quello di disattivare la cache sul server web.iOS6 - C'è un modo per cancellare le richieste POST ajax memorizzate nella cache per la webapp aggiunta alla schermata principale?

Entrambe le soluzioni sono dettagliati nel seguente post: Is Safari on iOS 6 caching $.ajax results?

di disattivare il caching sul server web avrebbe risolto il problema se è stato impostato prima dell'aggiornamento iOS6 (o subito dopo). Tuttavia, sembra che tutte le richieste POST siano state fatte dopo l'aggiornamento e fino a quando non abbiamo disattivato la memorizzazione nella cache dalle app aggiunte alla schermata iniziale, sono ancora memorizzate nella cache! e non riusciamo a trovare un modo per eliminarli. rimuovere l'app della schermata iniziale e riavviare il dispositivo non fa il trucco! L'unica opzione che abbiamo è cambiare il nostro URL o aggiungere un timestamp ad ogni richiesta, oltre a disattivare la memorizzazione nella cache sul server web.

Qualcuno sa di un modo per cancellare una cache app schermata iniziale, a parte il ripristino di fabbrica? si prega di fornire dettagli.

Attenzione a chi ha implementato una soluzione con l'aggiunta di un timestamp alle loro richieste senza spegnere la memorizzazione nella cache sul server. Se la tua app viene aggiunta alla schermata iniziale, OGNI post risposta verrà ora memorizzata nella cache e non sembra scadere. A meno che qualcuno non abbia un modo per eliminarlo, sembra una potenziale perdita di memoria!

+1

L'iOS6 cache è chiaramente in contrasto con le specifiche HTTP (vedi http://www.mnot.net/blog/2012/09/24/caching_POST). Non aspettatevi di essere lì in 6.01 – Alnitak

+2

E 'infatti in contrasto con le specifiche, ma mi aspetto di essere ancora lì a 6.01 come Apple non hanno riconosciuto il bug e probabilmente solo assumere persone si risolvere il problema se stessi e possono mantenere il loro bel "miglioramento delle prestazioni". Grr. – Kieran

risposta

1

L'unico modo per battere consitently questo problema di cache nella mia esperienza è quello di prendere l'approccio di Google e aggiungere una per ogni richiesta id nell'URL. È quindi possibile utilizzare mod_rewrite o un altro motore di questo tipo per rendere il server trasparente per gli script di back-end.

+1

concordato. Aggiungi un ID per richiesta (salvalo nella sessione) che scade dopo aver ricevuto i dati del post. Facoltativamente, potresti aggiungere questo come elemento di un modulo nascosto invece di un parametro url, ma in ogni caso funzionerebbe. –

Problemi correlati