JSON File vs. ??? - welche Alternativen

  • JSON File vs. ??? - welche Alternativen

    Guten Morgen (wieder),

    momentan habe ich eine iOS Karte in meiner iPhone App. Auf dieser Karte sollen verschiedene Marker angezeigt werden und dann jeweils einzelne Profilseiten geöffnet werden. Also mehr oder weniger sind auf der Karte User abgebildet deren Profile man dann groß öffnen kann.

    Leider stößt die App bei 500 Profilen auf der Karte beim RAM schon an die 50 MB Grenze (ich denke, weiter hoch sollte es definitiv nicht gehen). Welche Alternativen gibt es noch? Ist es sinnvoller, diese Profile aus der MySQL Datenbank auszulesen?

    Momentan wird via Cronjobs minütlich eine neue JSON Datei mit aktuellen Daten (oder bei Klick auf den Update Map Button manuell) erstellt. Die JSON Datei ist bei 500 Profilen knapp 100 KB groß, also noch handlebar. Diese JSON Datei wird beim Map Update jedes Mal neu eingelesen und geladen. Das dauert dann immer 0.5 - 2.0 Sekunden (wo die App stark langsam ist).

    Habt ihr eine Idee wie man das sonst realisieren kann? Und vor allem effizienter?
    Bei MySQL könnte man ja wenigstens nur die Leute rausladen, die in einem gewissen Radius zur Lat / Long Center Position der Map sind. Und beim ändern der Position immer neu nachladen. Wobei das halt "permanent" beim bewegen in der Map Internet benötigen würde. Beim JSON File wird nur einmal die Datei geladen und gut ist. -> Jetzt mal auf den Akku bezogen

    Hoffe ihr habt da ein paar gute Ratschläge.

    Besten Dank,
    zero
  • Du kannst die Profile auch einfach in einer SQLite-Datei ausliefern. Das ist vom Umfang her wahrscheinlich nur unwesentlich besser als die JSON-Datei, aber Du kannst darin suchen, ohne alle Einträge einlesen zu müssen.

    Die Datenmenge für die Übertragung kannst Du relativ einfach über mod_gzip oder mod_deflate im Webserver reduzieren, wenn Du in der Anfrage den entsprechenden Header aktivierst.
    „Meine Komplikation hatte eine Komplikation.“
  • Du kannst die Datei auch von Hand zippen. Dann musst Du sie allerdings auch selber auspacken. Dadurch vermeidest Du zumindest eine höhere Last auf dem Server.

    Finden auf Deinen Daten tatsächlich so viele Aktualisierungen statt, dass ein minütliches Update notwendig ist? Andernfalls kannst Du auf dem Server die Datei nur austauschen, wenn neue Daten vorhanden sind. Deine App kann dann über den Last-Modified-Header prüfen, ob sie die Daten überhaupt neu laden muss.
    „Meine Komplikation hatte eine Komplikation.“
  • Theoretisch müsste die Map Realtime sein, da sich die Menschen darauf ja bewegen. Aber da weiß ich leider nicht wie das geht, deswegen halt dieser "Hack"..

    Hast du ein Code Snippet für das mit dem Last-Modified-Header? Wäre eigentlich eine coole Idee, wobei die JSON Datei ja sowieso minütlich über Cronjobs geupdated / neu erstellt wird. Was diese Option dann wieder ausschließt.
  • Und wie soll ich das prüfen?
    Es muss ja irgendetwas geschehen damit eine Funktion ausgeführt wird.

    Quellcode

    1. - (void)mapView:(MKMapView *)mapView
    2. didUpdateUserLocation:
    3. (MKUserLocation *)userLocation
    4. {
    5. self.mapView.centerCoordinate =
    6. userLocation.location.coordinate;
    7. }


    Das ist es schn eher..