2016-03-24 2 views
1

Wenn ein Benutzer einen Artikel zum Lesen auswählt, verwende ich die Embedly's Extract API, um den HTML-Inhalt des Artikels zu extrahieren, und wenn ich die NSString aller HTML-Tags trimme, habe ich den vollständigen Text des Artikels.iOS - Wie man Artikel-Text ableitet, der mit Embedly API abgeleitet wird?

Embedly hat mir ein bestimmtes API-Anruflimit (50.000 Anrufe pro Monat) gegeben. Wenn ein Benutzer denselben Artikel mehrmals auswählt, wird der Aufruf der API zum Einbetten von Auszügen mehrmals für dieselbe URL dieses Artikels ausgeführt.

Wenn ein Benutzer denselben Artikel dreimal auswählt, bedeutet das, dass ich 3 Embedly API-Aufrufe für dieselbe URL verschwendet habe? Wenn das der Fall ist, wie kann ich den Volltext eines Artikels zwischenspeichern?

Wenn mehrere API-Aufrufe unter der gleichen URL verschwendet werden, muss dies eingerichtet werden. Wenn ein Benutzer einen Artikel zum erneuten Lesen auswählt, macht er den API-Aufruf von Embedly seither nicht mehr erforderlich Ich habe den vollständigen Text des Artikels bereits zwischengespeichert.

Ich bin neu im gesamten Konzept des Caching. Ich habe gelesen, dass es verwendet werden sollte, wenn sich Daten wahrscheinlich nicht ändern. Wie kann ich das tun? NSUserDefaults? CoreData? Eine weitere Sache, die mich beim Caching verwirrt, ist folgende: Wie kann ich einen zwischengespeicherten Artikel loswerden, wenn er in der Instanz nicht mehr benötigt wird, die er beispielsweise dem Benutzer in meinem Browser nicht mehr angezeigt wird? App-Artikel/RSS-Feed?

Jede Hilfe oder Beratung wäre willkommen. Vielen Dank.

Antwort

1

Wenn das Caching nur stattfinden soll, wenn die Anwendung aktiv ist - verwenden Sie NSCache, es handelt sich um eine NSDictionary-ähnliche API, und der Cache wird automatisch gelöscht, wenn der Speicherdruck in iOS hoch ist.

Wahrscheinlich möchten Sie einen persistenten Cache, der auch funktioniert, wenn der Benutzer die App beendet. Dann ist das Beste, was Sie tun können, implementieren NSCoder in das Modellobjekt, das das Ergebnis für Sie hält. Oder einfacher einfach eine NSDictionary mit - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag serialisieren.

Die beste Lösung zum Speichern von API-Aufrufen ist ein Backend und Cache auf der Backend-Seite (vorausgesetzt, die von Benutzern bereitgestellten Links sind für sie in keiner Weise privat, persönliche Daten, Bankkonten usw.). Das Backend sollte Embedly aufrufen und alle Anfragen dort zwischenspeichern. Selbst die gleichen URLs, die von denselben Benutzern überprüft werden, führen also nicht zwei API-Aufrufe aus.

+0

Leider ist meine App zu diesem Zeitpunkt nur Front-End ohne Back-End. Im Moment werde ich etwas über die Lösung lesen, die Sie mir gegeben haben, um ein 'NSDictionary' zu serialisieren und in eine Datei zu schreiben. Wird das auch gelöscht, wenn der Speicherdruck hoch ist? – Rafi

+1

Nein, Sie müssen es manuell verwalten. Aber wenn Sie vom Speicher auf die Festplatte speichern, sollten Sie in Ordnung sein. Ich weiß nicht, ob Sie vorher Speicherprobleme mit der Menge an Strings hatten, die Sie hatten. – Alistra

Verwandte Themen