2012-09-28 6 views
9

iOS6 ajax POST-Anfrage-Caching wird zu einem großen Problem für unsere WebApp. Die meisten unserer Nutzer haben die App auf dem Startbildschirm hinzugefügt. Seit dem Upgrade funktionieren die meisten POST-Anfragen an das Backend nicht mehr und die Daten sind seit über 6 Tagen veraltet. Uns sind zwei Problemumgehungen bekannt, um dieses Problem zu lösen: Zum einen können Sie jede POST-Anfrage ändern, indem Sie einen Zeitstempel oder eine zufällige Eingabe hinzufügen, zum anderen deaktivieren Sie das Zwischenspeichern auf dem Webserver.iOS6 - Gibt es eine Möglichkeit, zwischengespeicherte Ajax-POST-Anfragen für Webapps, die auf dem Startbildschirm hinzugefügt wurden, zu löschen?

Beiden Abhilfen sind im folgenden Beitrag beschrieben: Is Safari on iOS 6 caching $.ajax results?

Drehen Caching auf dem Webserver ab, das Problem gelöst wäre, wenn es vor dem iOS6 Upgrade gesetzt wurde (oder direkt nach). Es scheint jedoch, dass alle POST-Anfragen, die seit dem Upgrade und bis zu dem Zeitpunkt, an dem wir die Zwischenspeicherung von Apps, die zum Startbildschirm hinzugefügt wurden, durchgeführt wurden, noch im Cache gespeichert sind! und wir können keinen Weg finden, sie zu löschen. Entfernen der Startbildschirm App und Neustart des Geräts nicht den Trick! Die einzige Option, die wir haben, ist die Änderung unserer URL oder das Hinzufügen eines Zeitstempels zu jeder Anfrage zusätzlich zum Deaktivieren des Caching auf dem Webserver.

Kennt jemand eine Möglichkeit, einen Home-Bildschirm-App-Cache zu löschen, abgesehen von der Wiederherstellung der Fabrik? Bitte machen Sie Angaben.

Warnung für alle, die eine Problemumgehung durch Hinzufügen eines Zeitstempels zu ihren Anforderungen implementiert haben, ohne das Caching auf dem Server zu deaktivieren. Wenn Ihre App zum Startbildschirm hinzugefügt wird, wird JEDE Postantwort zwischengespeichert und scheint nicht abzulaufen. Es sei denn jemand hat eine Möglichkeit, es zu löschen, sieht das wie ein mögliches Speicherleck aus!

+1

Das iOS6-Caching steht eindeutig im Gegensatz zu den HTTP-Spezifikationen (siehe http://www.mnot.net/blog/2012/09/24/caching_POST). Erwarte es nicht in 6.01 zu sein – Alnitak

+2

Es ist in der Tat im Gegensatz zu den Spezifikationen, aber ich erwarte, dass es noch in 6.01 da sein wird, da Apple den Bug nicht anerkannt hat und wahrscheinlich nur annehmen wird, dass die Leute es selbst reparieren und sie können behalte ihre nette "Leistungsverbesserung" bei. Gr. – Kieran

Antwort

1

Die einzige Möglichkeit, dieses Cache-Problem meiner Erfahrung nach zu übertreffen, ist die Vorgehensweise von Google und das Hinzufügen einer ID pro Anfrage in der URL. Sie können dann mod_rewrite oder eine andere solche Engine für Ihren Server verwenden, um dies für Ihre Backend-Skripte transparent zu machen.

+1

Einverstanden. Fügen Sie eine ID pro Anfrage (Speichern in der Sitzung) hinzu, die abläuft, nachdem die Postdaten empfangen wurden. Optional könnten Sie dies als verstecktes Formularelement anstelle eines URL-Parameters hinzufügen, aber so oder so würde es funktionieren. –

Verwandte Themen