wake-up-neo.com

Wie kann ich den Cache von einem löschen? IOS Web App auf dem Homescreen?

Ich benutze JQTouch, um eine Web-App auf dem Homescreen mit dem Meta-Tag "Apple-Mobile-Web-App-fähig" zu erstellen. Unabhängig davon, wie oft ich den Cache in den Einstellungen geleert habe, ist Javascript in der Web-App immer noch älter Ausführung.

Seltsamerweise, wenn ich den Inhalt des Metatags auf setze;

<meta name="Apple-mobile-web-app-capable" content="no" />

... dann füge ich die Web App zum Homescreen hinzu. Ich erhalte die neueste Version, wenn ich sie starte.

Aber wenn ich das Meta-Tag auf setze;

<meta name="Apple-mobile-web-app-capable" content="yes" />

... dann füge die Web App zum Homescreen hinzu, ich bekomme die ältere zwischengespeicherte Version.

PS. Ich kann bestätigen, dass nur das Javascript nicht aktualisiert wird.

26
GilbertSinnott

Sie könnten versuchen, einen eindeutigen String am Ende des src-Attributs Ihres js include hinzuzufügen (verwenden Sie beispielsweise einen Zeitstempel). Denken Sie daran, dass Sie diese eindeutige Zeichenfolge für jede Aktualisierung ändern müssen, die Sie durchführen möchten. Daher sollten Sie das Lazy-Loading in Betracht ziehen (was Ihr Problem lösen kann): <script type="text/javascript" src="myScript.js?012345"></script>

Dies zwingt den Browser normalerweise dazu, die neueste Version des Skripts zu verwenden. Könnte funktionieren...

20
SquareFeet

Ich habe festgestellt, dass die Verwendung von Bundling Feature in ASP.NET MVC dieses Problem für mich gelöst hat.

Es erzeugt automatisch einen gebündelten Link des Formulars:

http://www.domain.com/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

Das Token nach dem v = ändert sich, wenn sich eine Datei im Bundle ändert. Dies garantiert, dass Browseranfragen für das Bundle das neueste Bundle erhalten.

1
muzzamo

Das hat mich absolut verrückt gemacht. Ich habe versucht, Safari zu töten, den Cache zu löschen, in den privaten Modus zu wechseln und die Web-App vom Startbildschirm zu entfernen. Keine davon funktioniert, aber was funktioniert, ist die Web-App-Seite vorübergehend in Safari selbst laden und neu laden.

Wenn Sie add zum Startbildschirm verwenden, können Sie der Installations-URL? Web_app_ready = 1 hinzufügen. Da dies keine Endbenutzerprozedur ist, ist das Hinzufügen einer Abfragezeichenfolge zu jedem Skript (die Antwort oben) wahrscheinlich für Nichtentwicklerumgebungen effektiver.

0
Chris

Wenn Sie im Jailbreak sind, tun Sie dies einfach im Terminal 

rm ./Library/Caches/com.Apple.webapp/Cache.db
0
Dmitry Grinberg

Dies ist ein Weg, der für mich funktionierte, um vollständig den Cache zu löschen:

1-Löschen Sie die Registerkarten in Safari, wo sich Ihre App befindet.
2-Löschen Sie das Symbol der App auf dem Startbildschirm.
3 - Kill Safari aus dem Gedächtnis.
4-Gehen Sie zu Einstellungen/Safari und klicken Sie auf Cache leeren.
5 - Sie können Ihr iPhone/Ihren iPod neu starten, wenn Sie sicher gehen möchten, dass es funktioniert.

0
Mageek

Aufbauend auf dem, was SquareFeet sagte, konnte man die neue Datei jedes Mal automatisch herunterziehen, wobei ein eindeutiger GET-Tag mit PHP an den Dateinamen angehängt wurde. Zum Beispiel:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <?php echo(mt_Rand(10000000, 99999999)); ?>
" />

Theoretisch könnte dieselbe Aufgabe mit JavaScript gelöst werden, allerdings mit einigen Änderungen am Webserver:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <div id="id"></div>
" />

<script language="Javascript" type="text/javascript">
   document.getElementById("id").innerHTML = Math.floor((Math.random() * 10000) + 1);
</script>
0
SnazzyJava