Javascript Datenspeicher ?

  • Gibt es so was? Genauer gesagt. Ich suche einen Weg, Daten aus einem Javascript zu sichern um diese dann auf einer anderen Seite im gleichen Script wieder zu verwenden.

    Grund: Im Script werden derzeit umfangreiche Berechnungen von Punkten und deren Koordinaten durchgeführt. Wechselt man nun die Seite, z.B. Seite 2, dann müssen wieder die gleichen Punkte berechnet werden. Derzeit erfolgt das per extra Request und JSON. Nur möchte ich mir eigentlich die mehrfache Verarbeitung der Daten sparen, denn einmal reicht ja. Nur, ist das möglich? Der Request selbst wird gecached, nur die Datenverarbeitung muss erneut erfolgen und die dauert schon "recht lange".

    Egal wo und wie ich suche, ich stoße immer wieder auf "SuperCokkie" und "userData", doch beides ist sehr speziell und nur auf einen Browser zugeschnitten, also nicht wirklich brauchbar.

    Werteübergaben per URL scheiden aus, denn das sind durchaus so an die 400kB !

    Hm, gibt es so was? Kennt einer was und kann mich auf den richtigen Weg bringen?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Mal zum Verständnis,

    Du lässt User-Seitig ein Javascript Berechnungen anstellen und möchtest
    die Daten die dabei entstehen User-Seitig speichern bzw. mitschleifen
    wenn der User die Seite wechselt, damit die Berechnungen nicht neu
    ausgeführt werden müssen, weil es viel ist und zu lange dauert?

    So etwa ...

    Sie dürfen nicht alles glauben was sie denken!

    (Heinz Ehrhardt)

  • Jep, genau so. Speziell geht es um Google-Maps und gut 7000 Marker. Die Positionen selbst kommen per JSON. Diese werden dann einer Berechnung unterzogen und an gmaps zur Erstellung der Punkte übergeben. Dieses Ergebnis, also die 7000 Marker-Objekte möchte ich nun gerne sichern.

    Die Map und die Marker sind auf jeder Unterseite identisch und sollten daher nur einmalig berechnet werden, zumindest für eine Dauer von x Stunden. Selbiges natürlich auch bei Zoom, denn da wird es auch immer neu berechnet.

    Für die Mobile Version hat Google einen Cache für die Maps, für die normale Version aber nicht.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Gibt es mit localStorage
    Das Problem ist, dass viele (über 10%) es inzwischen deaktiviert haben, weil der localStorage gerne für Supercookies u.ä. genutzt wird.

    Wann immer ich also auf eine Seite treffe, die es verwendet, ohne überhaupt zu testen, ob sie es darf oder kann, rolle ich mit den Augen und frage mich, wo die alten Entwicklertugenden hin verschwunden sind...

  • Ah, das hört sich sehr gut an :)

    Zitat

    Das Problem ist, dass viele (über 10%) es inzwischen deaktiviert haben


    Das habe ich mir auch gleich gedacht. Nur, wie kann man das denn deaktivieren? Im FF finde ich nichts dazu. Oder ist das der Punkt für "Offline Daten"?

    Zitat

    Wann immer ich also auf eine Seite treffe, die es verwendet, ohne überhaupt zu testen, ob sie es darf oder kann, rolle ich mit den Augen und frage mich, wo die alten Entwicklertugenden hin verschwunden sind...


    Macht mich auch gleich nachdenklich. Ob "man kann" kann ich testen, gut, das ist nicht sonderlich schwer. Aber wie ist das mit dem "ob man darf"? Gibt es da eine spezielle Funktion für? Genauso, wie sieht das denn rechtlich aus. Braucht es da auch Datenschutzbestimmungen wie bei den Cookies, möglicherweise manuelle Einwilligungen?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Im FF (ältere Version) konnte man es irgendwo in der about:config einstellen (in der Form: 0kb an Speicherplatz für localStorage bereitstellen), bei anderen Browsern werden sich diese Einstellungen irgendwo ähnlich vornehmen können.

    Mit dem "darf" meinte ich eher, ob der Client (d.h. Browser) es mir als Server erlaubt. Sprich: so zu verstehen wie "kann".

    Rechtlich würde ich es analog zu Cookies sehen. Habe mich aber auch nicht damit auseinandergesetzt, wie die Speicherdauer ist (und was der Browser macht, wenn die localStorage "voll" ist).

  • Ah ok, dachte ich es mir doch. Also keine Einstellung, die ein normaler User einfach mal so findet. Das wird dann womöglich wirklich ein Problem, denn erklären wie man es abstellt / verhindert geht so nicht wirklich.

    Die Speicherdauer kann ich Dir sagen, wenn man sich da auf w3c verlassen kann. Die ist unbegrenzt. Ein Limit gibt es noch nicht, ist aber gewünscht.

    Wenn der Speicher voll ist, dann meldet die Funktion einen Fehler, soweit bin ich auch schon. Der Browser selbst macht derzeit noch nichts. Später soll er mal Melden und "vorschlagen" den Speicher zu erhöhen (finde ich aber weniger gut, könnte Nutzer verärgern, vor allem, wenn die das nicht kennen).

    Aber so ganz scheint das für meinen Fall doch leider nicht zu passen. Speicherbar sind nur Strings. Sprich, ich muss mein JSON-Objekt wieder umwandeln in einen String und bei Bedarf wieder in ein Objekt. Dann kann ich es gleich neu laden aus dem Browsercache. Weitere Problem. Das Gmap-Objekt (das ich eigentlich sichern wollte) lässt sich gar nicht umwandeln in einen String, wegen den Abhängigkeiten. Dazu kommt dann noch, dass die Daten nicht gelöscht werden (kein Ablaufdatum). Per sessionStorage wäre es möglich, aber dort funktioniert es nicht in verschiedenen Tabs.

    Aber Dein Ansatz war mal wieder gut und führte mich auf entsprechende Seiten :) Bin nun mal testweise im Bereich webWorker bzw. indexedDB unterwegs :)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(