Taktiken zur Beschleunigung der WKWebView-Darstellung von loadHTMLString-d Inhalten?

8

Ich habe mit dem Stapeln von WKWebViews in einem UINavigationController experimentiert, um eine Hybrid-App zu erstellen, die nativer als PhoneGap ist. Es funktioniert weitgehend - ich hooke in decidePolicyForNavigationAction, wenn ein WKWebView einen Link trifft, und schiebe einen neuen ViewController mit dem gewünschten Link.

Aber das Laden der Seite ist langsam. Ich habe alles getan, was ich mir vorstellen kann, um es zu beschleunigen - es benutzt loadHTMLString statt einer Anfrage, um sicherzustellen, dass alles lokal ist - ich habe sogar versucht, CSS und JS zu entfernen, um zu sehen, ob das schneller geht, aber keine Würfel. Es dauert immer noch mindestens 500ms für eine kurze, nur HTML, lokal gespeicherte Seite, die im leeren WKWebView erscheint. Aus dem Debugging kann ich erkennen, dass die Verzögerung nicht darin besteht, den HTML-Code von der Platte zu lesen, sondern die Zeit zwischen loadHTMLString () und didFinishNavigation ().

Hat jemand irgendwelche Taktiken, um das zu beheben? Ich würde versuchen, die Ansicht vorab zu laden, nur weiß ich nicht, welchen Link der Benutzer tippen wird, so dass ich nicht weiß, was geladen werden soll.

    
Alastair 31.10.2014, 22:52
quelle

3 Antworten

2

Eine vorläufige Antwort - Ich habe einige Erfolge beim Erstellen der nächsten Ansicht im Voraus, dann evaluateJavaScript verwenden, um document.body.innerHTML = "content" auszuführen - es hat nicht die Verzögerung von einer halben Sekunde. Natürlich bedeutet das, dass ich früher einen WKWebview erstelle, als ich es sonst getan hätte, aber hoffentlich ist das kein Performance-Killer.

    
Alastair 01.11.2014 22:26
quelle
1

Sieht aus wie WKWebView / UIWebView Verzögerungen beim ersten Lauf. Ich habe eine einfache Klasse erstellt, um die Ladegeschwindigkeit der Webansicht beim Aufwärmen zu erhöhen. Sie können Beispielprojekt versuchen: Ссылка

    
Timur Bernikowich 08.02.2017 09:25
quelle
0

Mein Weg ist weniger nativ und mehr Web. 1. Erarbeiten Sie eine einzelne Seite App, wie Ссылка 2. Bündeln Sie alle Ressourcen (JS, CSS, Grafiken als Base64) in einer Datei. 3. Speichern Sie diese Datei in meinem Xcode-Projekt und verwenden Sie diese Datei zum Starten der App, indem Sie die baseURL als Ссылка

Der Code hier:

%Vor%

Das hat einige Vorteile: 1. Ich habe schon viele Jahre an der Web-App gearbeitet, also ist es sehr stabil. 2. Der gleiche Ansatz kann auf Android, Windows Phone und Blackberry verwendet werden. 3. SPA hat keine Paging-Ladung. Es fühlt sich sehr glatt an.

    
Oliver Zhang 06.01.2015 13:57
quelle

Tags und Links