Mit HTML5 wurden viele Speicher-APIs eingeführt, mit denen Sie große Datenmengen lokal im Browser. Der für jede Anwendung zugewiesene Speicherplatz ist jedoch standardmäßig auf einige wenige Megabyte. Mit Google Chrome können Sie ein größeres Speicherkontingent anfordern, das über das bisherige Limit von 5 MB.
Dieses Dokument bietet eine Einführung in die grundlegenden Konzepte rund um die Speicherarten in Chrome und beschreibt die experimentelle API zur Kontingentverwaltung, mit der Sie Ihr Speicherkontingent verwalten können. Die wird angenommen, dass Sie bereits mit den allgemeinen Konzepten des clientseitigen wissen, wie man Offline-APIs verwendet.
Inhalt
- Speicherarten <ph type="x-smartling-placeholder">
- Kontingent verwalten <ph type="x-smartling-placeholder">
- API-Referenz <ph type="x-smartling-placeholder">
- Künftige Entwicklung
Speicherarten
In Google Chrome können Sie nach drei Arten von Speicher fragen:
Diese Speichertypen werden in den folgenden Abschnitten ausführlicher beschrieben und mit den einzelnen Speichertypen verglichen. in der Tabelle unten.
Temporärer Speicher
Temporärer Speicher ist ein vorübergehender Speicher, der für jede Webanwendung verfügbar ist. Chrome gibt automatisch des temporären Speichers Ihrer App, sodass Sie keine Zuweisung anfordern müssen.
Pool teilen
Der temporäre Speicher wird von allen Web-Apps gemeinsam genutzt, die im Browser ausgeführt werden.
Der gemeinsame Pool kann bis zu 1/3 des verfügbaren Speicherplatzes ausmachen. Der bereits von Apps belegte Speicherplatz ist
in der Berechnung des gemeinsamen Pools enthalten; Das heißt, die Berechnung basiert auf
(available storage space + storage being used by apps) * .333
Jede App kann bis zu 20% des gemeinsamen Pools nutzen. Wenn beispielsweise der gesamte verfügbare Speicherplatz 60 GB, der gemeinsame Pool 20 GB und die Anwendung kann bis zu 4 GB haben. Dieser ergibt sich aus 20% (bis zu 4 GB) von 1/3 (bis zu 20 GB) des verfügbaren Speicherplatzes (60 GB).
Um mehr Speicherplatz bitten
Sie können den für Ihre App verfügbaren Speicherplatz und die Menge an Speicherplatz abfragen. von Daten, die bereits für Ihre App gespeichert sind, können Sie keinen zusätzlichen temporären Speicherplatz anfordern. Wenn eine App das zugewiesene Kontingent überschreitet, wird ein Fehler ausgegeben.
Kein Speicherplatz mehr verfügbar
Sobald das Speicherkontingent für den gesamten Pool überschritten ist, werden die gesamten der zuletzt verwendete Host gelöscht wird. Der Browser löscht jedoch keine Daten in LocalStorage und SessionStorage fest. Bei Daten, die in anderen Offline-APIs gespeichert sind, löscht der Browser die Daten vollständig und nicht damit App-Daten nicht unerwartet beschädigt werden.
Da jede App auf maximal 20% des Speicherpools beschränkt ist, erfolgt eine Löschung wahrscheinlich nur, wenn der Nutzer führt aktiv mehr als fünf Offline-Apps aus, die jeweils den maximalen Speicherplatz belegen.
Der verfügbare Speicherplatz kann jedoch sinken, wenn Nutzer weitere Dateien auf ihrer Festplatte hinzufügen. Wenn der Parameter der verfügbare Speicherplatz knapp wird (Denken Sie daran, dass der gemeinsame Pool nur die Hälfte des aktuellen verfügbaren Speicherplatzes Festplattenspeicher), löscht der Browser alle Daten, die für den am wenigsten verwendeten Host gespeichert sind.
Nichtflüchtiger Speicher
Nichtflüchtiger Speicher verbleibt im Browser, bis er vom Nutzer unwiderruflich entfernt wird. Es ist verfügbar Nur für Apps, die die File System API verwenden, später aber auch für andere Offline-APIs verfügbar sein werden wie IndexedDB und Application Cache.
Eine Anwendung kann ein größeres Kontingent für nichtflüchtigen Speicher als temporären Speicher haben, aber Sie müssen Fordern Sie Speicherplatz über die Quota Management API an und der Nutzer muss Ihnen die Berechtigung erteilen, Leerzeichen. In Chrome wird eine Infoleiste angezeigt, in der der Nutzer aufgefordert wird, mehr lokalen Speicherplatz für die App zu gewähren.
Unbegrenzter Speicherplatz
Unbegrenzter Speicherplatz ist vergleichbar mit nichtflüchtigem Speicher, ist aber nur für Chrome-Apps und
(.crx-Dateien) verwendet werden. Die Größe des unbegrenzten Speicherplatzes ist nur durch die Verfügbarkeit von Speicherplatz begrenzt.
auf der Festplatte des Nutzers. Du kannst die Berechtigung unlimitedStorage
in der Manifestdatei für
eine App oder Erweiterung Bei der Installation wird der Nutzer über die Berechtigungen informiert, die
die App oder Erweiterung. Durch die Fortsetzung der Installation erteilt der Nutzer implizit die Berechtigung für
alle Seiten, deren URLs in der Datei "manifest.json" aufgeführt sind.
Weitere Informationen finden Sie in den jeweiligen Entwicklerleitfäden für Apps und Erweiterungen.
Speichertypen vergleichen
In der folgenden Tabelle werden die Unterschiede zwischen den drei Speichertypen beschrieben.
Temporärer Speicher | Nichtflüchtiger Speicher | Unbegrenzter Speicherplatz | |
---|---|---|---|
Allgemeine Beschreibung | Vorübergehender Speicher, der für jede Webanwendung verfügbar ist. Sie erfolgt automatisch und muss nicht angefordert werden. | Permanenter Speicher, der über die Quota Management API angefordert und von Nutzern gewährt werden muss. | Dauerhafter Speicher für Chrome-Erweiterungen und -Apps. Sie wird in der Manifestdatei festgelegt und muss von Nutzern erteilt werden. |
Verfügbarkeit | Alle Web-Apps. | Alle Web-Apps. | Das ist nur für Chrome-Erweiterungen sowie für gehostete und installierte Web-Apps verfügbar. |
Berechtigung | Keine. Sie können sie verwenden, ohne sie ausdrücklich anzufordern. | Sie müssen mehr Speicherplatz über die Quota Management API anfordern. | Sie können die Berechtigung unlimitedStorage in der Manifestdatei für die App oder Erweiterung anfordern. |
Nutzererfahrung bei der ersten Verwendung | Für den Nutzer nicht sichtbar. Die App läuft einfach. | In Chrome wird eine Infoleiste angezeigt, in der der Nutzer aufgefordert wird, die Speicheranfrage zu akzeptieren oder abzulehnen. Liegt das angeforderte Kontingent jedoch unter dem aktuellen Kontingent der Anwendung, wird keine Aufforderung angezeigt. Das größere Kontingent bleibt erhalten. | Bei der Installation wird der Nutzer über die Berechtigungen informiert, die für die App oder Erweiterung erforderlich sind. Durch die Installation erteilt der Nutzer implizit die Berechtigung für alle Seiten, deren URLs in der Datei „manifest.json“ für Apps oder Erweiterungen aufgeführt sind. |
Nutzerfreundlichkeit bei nachfolgenden Anfragen nach mehr Speicherplatz | Nicht zutreffend. Sie können keinen zusätzlichen temporären Speicher anfordern. | Der Nutzer wird von Chrome noch einmal gefragt.
| Chrome fordert den Nutzer nach der Installation nicht auf, auch wenn von der App oder Erweiterung ein höheres Kontingent angefordert wurde. |
Persistenz von Daten | Vorübergehend. Die Daten können vom Browser gelöscht werden. | Dauerhaft. Der Browser löscht die Daten nur, wenn der Nutzer sie dazu auffordert. Daten sind bei nachfolgenden Zugriffen verfügbar. Gehe nicht davon aus, dass die Daten dauerhaft sind, da der Nutzer sie löschen kann. | Entspricht dem nichtflüchtigen Speicher.
|
Standardspeicherplatz | Bis zu 20% des gemeinsamen Pools. | 0 MB. Sie müssen explizit nach einem bestimmten Speicherplatz fragen. | 0 MB. Du musst in der Manifestdatei explizit nach Wenn Sie Ihre Speicheranforderungen nicht angeben, weist Chrome der App Speicher aus dem gemeinsamen temporären Speicherpool zu. |
Maximaler Speicherplatz | Bis zu 20% des gemeinsamen Pools. | So groß wie der verfügbare Speicherplatz auf der Festplatte. Es gibt keinen festen Speicherpool. | So groß wie der verfügbare Speicherplatz auf der Festplatte. |
Empfohlener Anwendungsfall | Caching | Apps, die offline funktionieren oder viele Assets enthalten | Apps, die für Google Chrome entwickelt wurden |
APIs, die sie verwenden können | Offline-APIs
Hinweis: Web Storage APIs wie LocalStorage und SessionStorage bleiben unveränderlich bei 5 MB. | Dateisystem-API | Offline-APIs
Hinweis: Web Storage APIs wie LocalStorage und SessionStorage bleiben unveränderlich bei 5 MB. |
Kontingent verwalten
Mit der Quota Management API, die in Chrome 13 eingeführt wurde, haben Sie folgende Möglichkeiten:
- Speichernutzung und Verfügbarkeit abfragen
- Mehr Speicherplatz anfordern
- Kontingent für Testzwecke zurücksetzen
Die API wird mit dem globalen Objekt window.webkitStorageInfo
implementiert.
Die Referenzdokumentation finden Sie im nächsten Abschnitt.
Speichernutzung und -verfügbarkeit abfragen
Um die verwendete Speichergröße und den für den Host noch verfügbaren Speicher abzufragen, rufen Sie
queryUsageAndQuota()
durch folgenden Code:
- Speichertyp, den Sie prüfen möchten
- Erfolgreicher Callback
Die von der API gemeldete Nutzung stimmt möglicherweise nicht mit der tatsächlichen Größe der Nutzerdaten überein, da benötigt möglicherweise zusätzliche Byte, um die Metadaten zu speichern. Außerdem können sich Statusaktualisierungen verzögern, was dazu führt, API gibt nicht den aktuellen Speicherstatus wieder.
Das folgende Code-Snippet zeigt, wie Sie Speicherplatz anfordern können:
// Request storage usage and capacity left
// Choose either Temporary or Persistent
navigator.webkitTemporaryStorage.queryUsageAndQuota (
function(usedBytes, grantedBytes) {
console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
},
function(e) { console.log('Error', e); }
);
Wenn Sie den Status des nichtflüchtigen Speichers abfragen möchten, ersetzen Sie einfach
webkitStorageInfo.TEMPORARY
mit webkitStorageInfo.PERSISTENT
. Die Aufzählung befindet sich ebenfalls in der
window
-Objekt (globaler Namespace), sodass Sie auch window.PERSISTENT
und
window.TEMPORARY
Mehr Speicherplatz wird angefordert
Sie müssen keinen zusätzlichen temporären Speicher anfordern, da die Zuweisung automatisch erfolgt und Sie über den Höchstwert hinaus (wie in der Tabelle beschrieben).
Für den nichtflüchtigen Speicher der File System API beträgt das Standardkontingent 0. Sie müssen sich also explizit
Speicherplatz für Ihre Anwendung anfordern. Rufen Sie requestQuota()
mit dem folgenden Befehl auf:
- Speichertyp
- Größe
- Erfolgreicher Callback
Je nachdem, wonach Sie fragen, geschieht Folgendes:
- Wenn Sie ein größeres Kontingent anfordern, zeigt der Browser dem Nutzer eine Infoleiste an, in der er aufgefordert wird, Berechtigungen für erhöhte Kontingente gewähren oder verweigern. In einigen Fällen kann die Anfrage ohne Ton abgelehnt und das aktuelle oder ein kleineres Kontingent wird zurückgegeben.
- Wenn das angeforderte Kontingent unter dem aktuellen Kontingent der Anwendung liegt, wird keine Eingabeaufforderung angezeigt.
- Wenn Sie mehr Speicherplatz anfordern, als zulässig ist, erhalten Sie eine Fehlermeldung (
QUOTA_EXCEEDED_ERR
). - Wenn Sie
requestQuota()
noch einmal aufrufen, nachdem der Nutzer die Berechtigung bereits erteilt hat, passiert nichts. Rufen Sie die Methode also nicht noch einmal auf.
Nachfolgend sehen Sie, wie Sie mehr Speicherplatz anfordern können:
// Request Quota (only for File System API)
var requestedBytes = 1024*1024*10; // 10MB
navigator.webkitPersistentStorage.requestQuota (
requestedBytes, function(grantedBytes) {
window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) { console.log('Error', e); }
);
});
Kontingent für Tests zurücksetzen
Wenn Sie den Speicher in Ihrer App testen, können Sie die gespeicherten Daten löschen, um die Kontingentverwaltung in Ihrer App neu testen. Gehen Sie dazu so vor:
- Geben Sie
chrome://settings/cookies
in die Omnibox (Adressleiste) ein. - Suchen Sie nach Ihrer App.
- Wählen Sie Ihre App aus.
- Klicken Sie rechts neben der markierten Auswahl auf das X.
API-Referenz
In diesem Abschnitt werden die Methoden der Quota Management API dokumentiert.
Konstanten
Die folgenden webkitStorageInfo
-Konstanten geben die Art des Speichers an.
Konstante | Wert | Beschreibung |
---|---|---|
TEMPORARY | 0 | Temporärer Speicher. |
PERSISTENT | 1 | Nichtflüchtiger Speicher. |
Methodenübersicht
queryUsageAndQuota |
requestQuota |
Methoden
queryUsageAndQuota
Prüfen Sie die verwendete Speichergröße und den verfügbaren Speicherplatz für den Host.
// you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
successCallback,
errorCallback);
successCallback
: Optionaler Callback mit zwei Parametern:- Die aktuelle Anzahl von Byte, die von der Anwendung verwendet werden.
- Die Anzahl der im Kontingent verbleibenden Byte.
errorCallback
: Optionaler Fehler-Callback.
requestQuota
Fordern Sie mehr Speicherplatz an. Im Browser wird eine Infoleiste angezeigt, in der der Nutzer aufgefordert wird, der App die Verwendung um mehr Speicherplatz zu erhalten.
// you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
newQuotaInBytes,
quotaCallback,
errorCallback);
Parameter
newQuotaInBytes
: Die Menge der Byte, die Sie für Ihr Speicherkontingent benötigen.successCallback
: Optionaler Callback, der die Menge der gewährten Byte weitergibt.errorCallback
: Optionaler Fehler-Callback.
Zukünftige Entwicklung
Geplant ist die Implementierung aller HTML5-Offlinespeicher-APIs, einschließlich IndexedDB, Application Cache, File System-APIs und anderen APIs, die angegeben werden können (im Rahmen des Kontingents), Management API Sie können damit den gesamten Speicherplatz verwalten.