2012-04-11 3 views
1

Ich habe ein jqm mehrseitiges Dokument (index.html), die mehrere Seiten und andere Assets (js, CSS, etc.) enthält. Ich habe meinen Server so konfiguriert, dass er Etags für die HTML-, CSS- und JS-Dateien verwendet. Die Anforderungs-/Antwortheader werden entsprechend festgelegt und funktionieren wie erwartet.So aktualisieren Sie Jquery Mobile Multipage Dokument nach der Bereitstellung neuer Software

Während der Verwendung meiner Anwendung gibt es keine Anfragen (mit Ausnahme der Abmeldung) an index.html, so dass es nie wirklich eine Chance für den Browser gibt zu sehen, ob es eine neue Datei gibt, geschweige denn alle Davon sind css und js Dateien (es sei denn, der Benutzer meldet sich ab, fordert die Seite erneut an oder führt eine Aktualisierung durch). Wie kann ich den Benutzer darüber informieren, dass ein neuer sw verfügbar ist und/oder die Aktualisierung der index.html-Datei erzwingen kann?

Meine anfänglichen Gedanken waren, die Version # auf dem Client zu speichern und in regelmäßigen Abständen Ajax-Anfragen an den Server zu stellen, um die Version # zu überprüfen. Wenn ein neuer sw verfügbar ist, zeigen Sie einen Link an, um den Benutzer über den neuen sw zu informieren und klicken Sie auf den Link, um ihn zu erhalten (reload index.html).

Ich bin gespannt wie andere das gemacht haben? Gedanken? Empfehlungen?

+0

Warum nicht den Appcache verwenden? Auf diese Weise, wenn Sie Ihre js/css/html aktualisieren, müssen Sie nur den Appcache verbessern – JonWells

Antwort

-1

Wenn Sie mehrseitiges Dokument verknüpfen, können Sie ein Datum Ajax = „false“ Attribut auf dem Link, um eine vollständige Aktualisierung der Seite zu veranlassen, aufgrund der Einschränkung oben, wo wir laden nur die erste Seite Knoten verwenden müssen in eine Ajax Anfrage wegen möglicher Hash-Kollisionen. Es gibt derzeit eine Unterseite Plugin, das es ermöglicht, in mehrseitigen Dokumenten zu laden.

Referenz: http://jquerymobile.com/demos/1.1.0/docs/pages/page-navmodel.html

Bitte auch aussehen:

Fälle, wenn Ajax-Navigation nicht

Unter bestimmten Bedingungen normale HTTP-Anfragen verwendet werden verwendet werden, anstelle von Ajax-Anfragen. Ein Fall , wo dies wahr ist, wenn Sie auf Seiten auf externen Websites verlinken. Sie können auch angeben, dass eine normale HTTP-Anforderung durch die folgende Verbindung hergestellt wird Attribute:

rel = externes

Ziel (mit einem beliebigen Wert, wie „_blank“)

Wenn die Seiten wird als HTTP-Anfrage statt Ajax geladen, das Problem wäre gelöst.

+0

Dies ist keine gute Option, es bedeutet, dass wir Seitenübergänge verlieren. – Justin

Verwandte Themen