2016-06-25 10 views
0

Ich modifiziere meine Google Chrome-Erweiterung und recherchiere eine Möglichkeit, Daten zwischenzuspeichern. Die Erweiterung zeigt 2 Arten von Inhalten, beide können als Arrays von Objekten (weniger als 5kb insgesamt) behandelt werden, sagen News-Liste von RSS-Feed und Liste der Rezepte.Caching in Chrome-Erweiterung chrome.storage vs Hintergrundskript

Um die Ladezeit zuerst zu sparen, könnte ich chrome.storage.sync verwenden, um Daten einmal zu speichern und die Lebensdauer des Cache jedes Mal zu überprüfen und bei Bedarf zu erneuern.

Aber der Unterschied ist, dass es eine neue Registerkarte Typ Erweiterung ist, so dass es jedes Mal geladen wird, wenn Benutzer eine neue Registerkarte öffnet - so laden Geschwindigkeit der Daten für die Benutzeroberfläche ist noch kritischer. Also habe ich über eine zusätzliche Hintergrundseite oder ein Hintergrundskript (https://developer.chrome.com/extensions/background_pages) nachgedacht, um diese Daten dort als einfache Objekte im Speicher zu speichern.

Kann das Hintergrundskript als eine Möglichkeit angesehen werden, oder gibt es Einschränkungen beim Zugriff (oder der Geschwindigkeit des Zugriffs) oder der Datenübertragung zwischen dem neuen Tab-Skript und dem Hintergrund?

Ich habe auch geprüft, diese Frage, aber das ist nicht How do I cache data in Chrome Extension?

+0

ich auf NTP Laufdrehzahl kommentieren werde. Nach dem, was ich gesehen habe, ist eine _persistent_ Hintergrundseite der einzige Weg, um ein nahezu sofortiges NTP-Laden sicherzustellen, sonst sehe ich immer eine nervige Verzögerung, bevor der Inhalt in einer leeren Registerkarte erscheint. Die meisten NTP-Erweiterungen, so weit ich weiß, weisen die Verzögerung auf und sind immer noch beliebt, also schätze ich, dass es die Leute nicht zu sehr stört. – wOxxOm

+0

Wenn Sie "neue Tab-Typ-Erweiterung" sagen, meinen Sie, dass die Erweiterung die Newtab-Seite überschreibt? Wenn dem so ist, können Inhaltsskripte meines Wissens nicht in die ** überholte ** Newtab-Seite eingefügt werden. Wie übertragen Sie also Daten von der Hintergrundseite? Durch einen Middleware-Server? –

+0

@HaibaraAi "meinst du, dass deine Erweiterung die newtab-Seite überschreibt" - ja genau. "meines Wissens können Inhaltsskripte nicht in eine übergeordnete Newtab-Seite eingefügt werden" - das wusste ich nicht. Vielen Dank, ich werde in diese Frage tauchen – shershen

Antwort

0

Ja, Hintergrundskript eine Art und Weise half in Betracht gezogen werden.

Sie könnten

  1. Belastung der Lagerung im Voraus im Hintergrund Seite,
  2. dann jedes Mal, wenn der overrided newtab geöffnet ist, können Sie Nachricht über chrome.runtime.sendMessage vorbei beginnen konnte,
  3. dann einmal Hintergrundseite erhält er , Paket alle benötigten Informationen und senden Sie es über sendResponse,
  4. schließlich können Sie die im Cache gespeicherten Informationen über die response in neue Seite.

Beispielcode: Injecting Javascript into Newly Created Tab in Chrome Extension

+1

Gibt es einen tatsächlichen Beweis, dass' sendMessage'- 'sendResponse' Dance ist in diesem Fall schneller als 'Storage'-API lädt? Ich meine, beide sind relativ "langsam". Es muss sorgfältig gemessen werden, um zu sehen, ob Einsparungen beim JSON-Parsen überwiegen und einen anderen Teil von nicht-nativem Code beinhalten. – Xan

+0

@Xan nach meinem rohen Testfall lohnt es sich zu tun! Der "sendMessage-sendResponse-Tanz" macht es in 0,01 ms statt der chrome.history-Suche, die 300-500 ms dauert – shershen