Detect Firefox IndexedDB oder Web Storage Speicherlimit, ohne die Festplatte zu füllen?

8

Ich möchte IndexedDB verwenden, um viele Daten zu verarbeiten. Zu viele Daten, die in den Speicher passen. Um dies zu tun, möchte ich den persistenten IndexedDB-Speicher von Firefox verwenden, mit dem ich mehr als 2 GB Daten speichern kann ( Firefox hat anscheinend eine Grenze von 2 GB, die auf nicht persistente Speicher auferlegt wird ).

Ich bin jedoch auf ein Problem gestoßen. Firefox scheint die Datenmenge, die ich im persistenten Speicher speichern kann, nicht zu begrenzen. In der Tat, wenn ich das folgende Beispiel laufen lasse, läuft es anscheinend, bis der Datenträger voll ist!

Beispiel ( Online ) ( Muss ausgeführt werden Firefox! ):

%Vor%

Aus offensichtlichen Gründen ist das Auffüllen eines Benutzerlaufwerks nicht ideal. Wenn der Benutzer nicht genügend freien Speicherplatz hat, ist es besser, nicht zu versuchen, ihn überhaupt auszuführen, oder mindestens zu stoppen, wenn mehr als X% voll ist.

Seltsam, laut MDN scheint es, als ob der Browser sein sollte die Anzahl der gespeicherten Daten begrenzen:

  

Der maximale Speicherplatz des Browsers ist dynamisch - er basiert auf Ihrer Festplattengröße. Das globale Limit wird als 50% des freien Speicherplatzes berechnet. In Firefox verfolgt ein internes Browser-Tool namens Quota Manager den Speicherplatz, den jeder Ursprung verbraucht, und löscht Daten bei Bedarf.

     

Wenn Ihre Festplatte also 500 GB groß ist, beträgt der Gesamtspeicher für einen Browser 250 GB. Wenn dies überschritten wird, kommt ein Prozess namens Ursprungsräumung ins Spiel, bei dem die Daten des gesamten Ursprungs gelöscht werden, bis die Speichermenge erneut unter das Limit fällt. Es wird kein Trimmen-Effekt angewendet, um Teile des Ursprungs zu löschen - das Löschen einer Datenbank eines Ursprungs kann zu Problemen mit Inkonsistenzen führen.

     

Es gibt noch eine weitere Grenze, die Gruppengrenze genannt wird - das ist definiert als 20% der globalen Grenze. Jeder Ursprung ist Teil einer Gruppe (Herkunftsgruppe). Es gibt eine Gruppe für jede eTLD + 1-Domain.

Meine Tests haben jedoch nie Fehler verursacht, während sie das Laufwerk gefüllt haben.

Nun meine Frage ist, gibt es eine Möglichkeit, sicherzustellen, eine Menge von Daten in Firefox IndexedDB persistent Speicher wird nicht füllen ein Benutzer Laufwerk, und machen sie sehr, sehr wütend?

    
Alexander O'Mara 01.05.2017, 20:17
quelle

1 Antwort

3

Beachten Sie die Zeile im MDN-Artikel:

  

Temporärer Datenspeicher ruft keine Benutzeraufforderungen hervor, aber es gibt Speichergrenzen.

Es könnte klarer sein, aber es bedeutet, Speichergrenzen gelten nur für temporären Speicher. Das globale Limit und das Gruppenlimit gelten also nicht für den dauerhaften Speicher.

Sie können in den temporären Speicher wechseln. Aber wenn Sie persistent brauchen, können Sie Pech haben, bis Firefox navigator.storageQuota implementiert oder navigator.storageManager , je nachdem, worauf es ankommt.

    
dgrogan 04.05.2017, 18:07
quelle