Wie speichert man Javascript auf iphone Safari mit html5 localStorage?

7

Ich baue eine mobile Website, die die Hauptjquery-Bibliothek und einige eigene js verwendet. Unsere Webseite ist zu groß und hat zu viele Daten um eine einfache Offline / Online Web App zu sein. Wir brauchen Web-Konnektivität.

Ich versuche, die Caching-Leistung zu verbessern, um eine große Menge JavaScript für eine mobile Website zwischenzuspeichern. Es ist allgemein bekannt, dass das Caching auf der Safari des iPhones auf 15-25kb beschränkt ist und unser minimiertes js etwa 125kb groß ist.

Ich habe über die Verwendung des Cache-Manifests nachgedacht, aber dies hat den Nachteil, dass der Browser das Cache-Manifest bei jedem Laden der Seite anfordert, und da wir keine Web-Anwendung mit einer einzigen Seite verwenden, fügt dies zusätzliche Anforderungen hinzu Server.

Können wir das Javascript in localStorage (verfügbar in Mobile Safari und im Android Browser) zwischenspeichern und dann von dort aus ausführen?

    
Sean 24.02.2011, 17:41
quelle

3 Antworten

18

Ja, das kannst du. (Entschuldigung für die Beantwortung meiner eigenen Frage, ich dachte, das wäre eine interessante Lösung)

Ich habe einen Überblick über ein Codebeispiel hier auf Folie 12 gefunden.

Ссылка

Ich habe dies auf Ссылка implementiert (noch in der Betaversion)

Sie müssen die Versionierung der Skript-URL verwenden, um den Cache zu löschen, wenn eine neue Version erstellt wird. Dies funktioniert jedoch für Seiten mit localStorage und funktioniert auch, wenn localStorage nicht verfügbar ist. Ich habe einen Debugging-Code in die Fußzeile eingefügt, um anzuzeigen, von wo die js geladen wird.

Ich habe dies in ein Skript für den Header und einen der Fußzeile aufgeteilt. Diese erscheinen inline.

In der Kopfzeile (Ich habe es hier eingefügt, während wir moderniszr verwenden, um dem html-Tag einige Klassen hinzuzufügen, und ich möchte diese so schnell wie möglich zum Rendern verwenden. Kann in die Fußzeile verschoben werden.

%Vor%

und in der Fußzeile (aus Leistungsgründen). Ich lege die Standard-Lade-Methode. Beachten Sie, dass die Browser, die diese Verzweigung verwenden, alle ordnungsgemäß zwischenspeichern, solange die Header für verfallene Dateien abgelaufen sind.

%Vor%

Ich habe in Chrome und Safari bestätigt, dass die js von localStorage geladen wurde und die Site-Funktionalität wie erwartet funktioniert und keine Anfrage an den Server erfolgt. Und ich habe bestätigt, dass es beim Ausführen auf IE oder Firefox das Skript wie in der Fußzeile gefunden lädt.

Hinweis: Ich habe Code hinzugefügt, um die evals in try catch zu verpacken, da ich ein Problem mit Firefox hatte.

    
Sean 24.02.2011, 18:03
quelle
2

Ich bin auch auf diesen Skriptlader gestoßen, der basket.js genannt wird. Er könnte genau das tun, was Sie wollen .

    
meme 11.04.2013 19:09
quelle
0

Ich hatte eine ähnliche Frage und habe dafür auch eine kleine Bibliothek erstellt. Sie finden es unter Ссылка

Ich habe es erstellt, da basket.js eine Abhängigkeit hat und viel mehr Funktionalität zur Verfügung stellt, die ich brauche. Sie können meinen Code bei Github überprüfen, ich bin mir sicher, dass Sie alles schnell verstehen werden. Aber wenn Sie nur weitermachen und es hier verwenden möchten, ist hier ein vollständiges Beispiel, wie man es benutzt.

Die vollständige Bibliothek:

%Vor%

Aufruf der Bibliothek

%Vor%     
select 08.03.2015 14:55
quelle