2014-01-05 9 views
12

Das WebView meiner App lädt eine Seite und ich injiziere etwas Javascript, das einen Klick für mich automatisiert und einen Gegenstand zu meiner Wunschliste hinzufügt. Für so etwas würden Sie empfehlen, eine Datensitzung oder eine kurzlebige Sitzung zu verwenden, um die Seite zu laden? Geschwindigkeit ist mir wichtig, und ich versuche in Objective-C so viel wie möglich zu optimieren (yupp, sogar Millisekunden).iOS: Datensitzungen vs Ephemere Sitzungen

Die Seite lädt grundsätzlich eine Produktseite, so dass alles außer dem eigentlichen Produkt immer gleich ist (Hintergrundansicht, Website-Menüleiste, Schaltflächenbilder usw.). Im Moment verwende ich NSURLConnection, und ich versuche, meinen Code zu aktualisieren, stattdessen NSURLSession zu verwenden.

Antwort

1

Ich denke, Sie würden eine Standardsitzung verwenden, wie Sie möchten, dass Daten auf der Festplatte zwischengespeichert werden. Etwas eine ephemere Sitzung nicht

Der Engpass ist fast immer IO, so dass Sie Caching möchten, wenn die Daten sowieso nicht ändern. Für schnell Verkettungs Daten wäre dies nicht wert sein, aber Sie sagen ausdrücklich, dass die Daten nicht

+0

man könnte sogar sagen, dass Sie eine Datensitzung die PAE zu halten verwenden würde das Herunterladen, wenn Sie nicht einmal => wahrgenommen Leistung laufen kann sogar noch höher ausfallen dann –

13

Standard-Sitzungen ändern zum Download URLs ähnlich wie andere Foundation Methoden verhalten. Sie verwenden einen persistenten, festplattenbasierten Cache und speichern Anmeldeinformationen im Schlüsselbund des Benutzers.

  1. Konfiguration, die globale oder gemeinsame Speicherobjekte für Cookies, Caches und Anmeldeinformationen verwendet. Das Verhalten ähnelt NSURLConnection.

  2. Die freigegebene Sitzung verwendet die globalen Anmeldedaten für sleton, Cache und Cookies. Dies kann anstelle des vorhandenen Codes verwendet werden, die + verwendet [NSURLConnection sendAsynchronousRequest: Warteschlange: completionHandler:]

kurzlebige Sitzungen speichern keine Daten auf der Festplatte; Alle Caches, Anmeldeinformationsspeicher usw. werden im Arbeitsspeicher gehalten und an die Sitzung gebunden. Wenn Ihre App die Sitzung ungültig macht, werden sie automatisch gelöscht.

  1. Private Sitzungskonfiguration, die keine Speicherobjekte für Cookies, Caches und Anmeldeinformationen enthält. Wie der Name andeutet, sind die Konfigurationseinstellungen kurzlebig und werden gelöscht, wenn die Sitzung für ungültig erklärt wird.

Hintergrund Sitzungen sind ähnliche Sitzungen auf Standard, mit der Ausnahme, dass ein separater Prozess, der alle Datenübertragungen abwickelt. Hintergrund Sitzungen haben einige zusätzliche Einschränkungen, beschrieben in „Background Transfer Considerations.“

  1. Hintergrund Sitzung ähnelt Sitzung Standard, aber es kann verwendet werden, Netzwerkoperationen im Namen einer aufgehängten Anwendung auszuführen, innerhalb bestimmter Einschränkungen.

  2. Ähnlich wie bei der Standardsitzung, aber das Hoch- oder Herunterladen von Daten kann auch ausgeführt werden, wenn sich die Anwendung im Status "Ausgesetzt" befindet.

Referenz von Apple Doc

//Default session 
+ (NSURLSessionConfiguration *)defaultSessionConfiguration; 

//Ephemeral 
+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration; 

//Background 
+ (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier; 

NSURLSession Aufgaben und Delegierten

Unten Bild erklärt Arten von NSURLSession Aufgaben und ihre Hierarchie.

More Details

enter image description here

+0

fast 1: 1 Zitat der Dokumente, ohne src zu erwähnen und nicht zugeschnitten, um die Frage überhaupt zu beantworten –