Wie kann ich Inhalte in UIWebView zwischenspeichern, um sie später schneller zu laden?

Lesezeit: 2 Minuten

Wie kann ich Inhalte in UIWebView zwischenspeichern um sie spater
erotsppa

Ich stelle fest, dass die iPhone-Safari Inhalte zwischenspeichert, sodass das Laden Ihrer Seite für später viel schneller ist, ähnlich wie bei einem Desktop-Browser. Nehmen Sie zum Beispiel die mobile Google Mail-Webseite, der erste Ladevorgang ist ziemlich langsam (5-10 Sekunden). Aber wenn ich den Tab schließe und die Seite erneut öffne, geht es sehr schnell (1 Sekunde).

Dieses Verhalten ist jedoch nicht dasselbe, wenn Sie den Inhalt über eine UIWebView in Ihre App laden. Übersehe ich einige Einstellungen? Wie lasse ich den Inhalt von UIWebView automatisch zwischenspeichern, ohne den Inhalt selbst speichern zu müssen?

1643908326 547 Wie kann ich Inhalte in UIWebView zwischenspeichern um sie spater
zaph

Der Schlüssel ist: NSURLRequestReturnCacheDataElseLoad

NSData *urlData;
NSString *baseURLString =  @"mysite.com";
NSString *urlString = [baseURLString stringByAppendingPathComponent:@"myfile"];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; 
NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:nil]; 

if (connection)
{ 
    urlData = [NSURLConnection sendSynchronousRequest: request];

    NSString *htmlString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
    [webView loadHTMLString:htmlString baseURL:baseURLString];
    [htmlString release];
}

[connection release];

  • Die iOS-Dokumentation sagt, dass NSURLRequestReturnCacheDataElseLoad “Gibt an, dass die vorhandenen Cache-Daten verwendet werden sollten, um eine Anfrage zu erfüllen, unabhängig von ihrem Alter oder Ablaufdatum.” Das ist im Allgemeinen nicht das, was Sie wollen, da es Cache-Richtlinien-Header wie max-age usw. ignoriert. Das klingt also nicht nach einer guten allgemeinen Antwort. Die scheinbar beste Wahl ist “NSURLRequestUseProtocolCachePolicy”, aber das scheint nichts zu tun.

    – Yetanotherjosh

    19. April 11 um 2:07 Uhr

Wie kann ich Inhalte in UIWebView zwischenspeichern um sie spater
Rahul K Rajan

NSString *stringurl=[NSString stringWithFormat:@"http://www.google.com"];
NSURL *url=[NSURL URLWithString:stringurl];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:15.0];
[uiwebview loadRequest:theRequest];

Es wird beim ersten Mal eine URL geladen und dann nur nach Inhaltsänderungen gesucht. Wenn der URL-Inhalt keine Aktualisierungen enthält, wird er aus dem Cache (lokaler Speicher) geladen.

  • Kannst du es ein bisschen erklären?

    – Michi

    3. Oktober 14 um 7:07 Uhr

  • Es wird beim ersten Mal eine URL geladen und dann nur nach Inhaltsänderungen gesucht. Wenn der URL-Inhalt keine Aktualisierungen enthält, wird er aus dem Cache (lokaler Speicher) geladen.

    – Rahul K Rajan

    6. Oktober 14 um 4:45 Uhr

  • Ja, aber tun Sie dies als Antwort

    – Michi

    6. Oktober 14 um 4:49 Uhr

Beyogen auf diesen Diskussionsthread Es scheint, dass kein Caching auf Betriebssystemebene möglich ist UIWebView. Aufgrund meiner Erfahrung habe ich festgestellt, dass Safari auf meinem iPhone OS-Gerät seine Webseiten nicht zwischenspeichert (z. B. durch Drücken der Zurück-Schaltfläche in Safari wird die alte Seite nicht aus einem Cache neu geladen).

  • Anscheinend funktioniert der Cache nur mit HTML 5-Manifest, das offline verwendet wird.

    – Jianhua

    26. September 12 um 3:25 Uhr

Ich habe ein paar Apps erstellt, die Seiten im Ordner “Dokumente” zwischenspeichern und dann die Zeitstempel der zwischengespeicherten und Webseiten vergleichen, bevor die neue Webseite geladen wird. Der grundlegende Ablauf ist also:

if (fileIsInCache)
    if (cacheFileDate > webFileDate)
        getCachedFile
    else
        getFileFromWeb
        saveFileToCache
else
    getFileFromWeb
    saveFileToCache

stuffFileIntoUIView

maybeReduceCache

Sie müssen immer noch ins Internet gehen, um die Header zu erhalten, aber das ist normalerweise viel schneller als das Herunterladen einer ganzen Seite/eines Bildes/einer ganzen Datei.

.

757910cookie-checkWie kann ich Inhalte in UIWebView zwischenspeichern, um sie später schneller zu laden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy