2017-05-29 6 views
0

Ich habe eine Progressive Web App, die auf meinem Startbildschirm hinzugefügt wird. Ich habe einen eigenständigen Lauftyp gewählt, ich habe eine service-worker läuft darin.Progressive Web App im Standalone gestartet keine Website-Updates erkennen

All funktionierend, nur einen Zweifel: Wenn ich meine Seite (mit seinen relativen service-worker aktualisieren, ich Updates sehen kann, wenn ich es in dem Browser direkt laden, aber wenn ich es nach Hause zu starten hinzugefügt Link, den ich immer die alte Website sehen .

ist eine Möglichkeit, Änderungen zu verlangen Es wenn meine Seite im Standalone-Modus starten?

+0

Was ist das 'start_url', die Sie in Ihrem Web-App-Manifest verwenden sind? Wenn Sie in Chrome auf Ihrem Gerät zur gleichen "start_url" navigieren, sehen Sie einen anderen Inhalt als den, den Sie in Ihrem Add-to-Homescreen-Link sehen? –

Antwort

0

Nach dem Graben habe ich die einfache Lösung entdeckt, ich berichte es für andere.

iOS unterstützt service-workers nicht, so dass das nicht das Problem ist. iOS halten in vielen Ressourcen-Cache, so dass die Lösung ist, einen Parameter zu den verschiedenen Importen hinzufügen wie folgt:

Die beste Lösung Updates, um sicherzustellen, ist es, einen Hash von importierten als Parameter hinzuzufügen.

Alternativ können wir einen Zeitstempel verwenden, um sicherzustellen, dass Ressourcen IMMER aktualisiert werden.

Um diesen Parameter legen wir diese Ressourcen, um sie mit Javascript importieren Injektion, wie so

/** 
* inietta uno script nella pagina 
*/ 
function appendScript(url) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    script.async = false; // async false to wait for previous file loading 
    head.appendChild(script); 
} 

// create parameter with date 
var currVersion = '?v=' + new Date().getTime(); 

// get head html element 
var head = document.getElementsByTagName("head")[0]; 

// append script 
appendScript('app.js' + currVersion); 

// append css 
head.insertAdjacentHTML('beforeend', '<link rel="stylesheet" type="text/css" href="style.css' + currVersion + '">'); 
0

ich glaube, Sie Ja! „dynamisch ein Weg, um meine precached Vermögen zu aktualisieren, ohne meine Servicemitarbeiter zu aktualisieren? gibt es“ fragen Ich habe an einem Upgrade auf die JSON-Cache-Strategie gearbeitet ->https://serviceworke.rs/json-cache.html Wir werden dies bald veröffentlichen!

+0

es klingt interessant ... ich werde versuchen, und ich rate dir, danke im voraus – firegloves

+0

chris yout json cache strategie wird von ios safari unterstützt? – firegloves

+0

Ja wird es. Ich mache diesen Mechanismus seit etwa 6-7 Jahren. Mit Service-Mitarbeitern habe ich es aktualisiert und von localStorage zu indexeddb migriert. Dies ist eine Präsentation, die ich @ Velocity vor ein paar Jahren auf die Gesamtkonzepte gegeben habe -> https://youtu.be/GKxkzu0pHUc?list=PLqf5nhDkyqZHR6fQxCYoqPIJwiRdoMXMf Dies ist ein Artikel über die Verwendung von localStorage für Caching Ich schrieb vor langer Zeit -> https://love2dev.com/blog/use-local-storage-to-make-your-single-page-web-application-rock/ Ich hoffe, neuen Code für Service-Arbeiter diese Woche mit einem Legacy-Browser abgeschlossen haben (iOS) Fallback. –

Verwandte Themen