5

Von dem, was ich verstehe, wenn Sie in der Chrome-Speicher-API gespeichert ein Array haben wollen, zu denen Sie immer wieder Elemente hinzufügen wollen, müssen Sie etwas wie folgt aus:Wie kann ich Elemente effizient zu einem Array in der Chrome Storage API hinzufügen?

function addToHistory(url) { 
    chrome.storage.sync.get('history', function(obj) { 
     var history = obj.hasOwnProperty('history') ? obj.history : []; 
     history.push(url); 
     chrome.storage.sync.set({'history': history}, function() { 
      if (chrome.runtime.lastError) 
       console.log(chrome.runtime.lastError); 
      else 
       console.log("History saved successfully"); 
     }); 
    }); 
} 

Dieser Code stört mich; Laden und dann das gleiche Array speichern jedes Mal Sie schieben ein einzelnes Element auf das Ende ist schrecklich ineffizient (vor allem, wenn Ihre history Array beginnt, mehrere tausend Einträge zu bekommen).

Gibt es eine effizientere Möglichkeit, dies zu tun? Ich gehe davon aus, dass ich nicht der Erste bin, der zu einem Array pushen möchte, also gibt es bereits einen empfohlenen Weg, dies zu erreichen?

Antwort

0

Ich denke nicht, dass chrome.storage.sync API ideal für das ist, was Sie brauchen. Im Grunde ist diese API ideal, um sich an Benutzereinstellungen oder einfache und kurze Daten zu erinnern. Sync API haben Einschränkungen für die Nutzung wie: - 102,4 KB für alle Daten im Speicher gehalten - 8 KB Daten pro Artikel - 1800 schreibt pro Stunde

Also, wenn Sie diese API verwenden plant einige historische zu speichern Daten die App kann Grenzen sehr schnell überschreiten.

Ich gehe davon aus, dass Sie eine Erweiterung entwickeln, nicht die App. In der App haben Sie Zugriff auf die chrome.syncFileSystem API, die zum Speichern synchronisierbarer Daten in einer Datei verwendet werden kann.

Bei der Beantwortung Ihrer Frage gibt es keine Möglichkeit, Ihre Funktion zu optimieren. Sie können versuchen, die Daten regelmäßig zu speichern - zum Beispiel alle 30 Sekunden. Sie müssen nur daran denken, Daten zu speichern, nachdem ein Benutzer die App geschlossen hat.

Sie können diesen Wert auch als Variable im Speicher speichern und speichern, wenn der Benutzer den Bildschirm verlässt oder die App schließt, aber gefährlich ist, weil die App möglicherweise geschlossen wird, bevor die asynchrone Task abgeschlossen wird.

Wie auch immer ich denke, dass diese API nicht die beste Lösung für Ihre App ist.

Verwandte Themen