2013-02-05 19 views
7

Wir erstellen eine Web-App, die viele Dateien als Blobs mit indexedDB speichert. Wenn der Benutzer unsere App maximal nutzt, könnten wir bis zu 15 GB Datei in indexeddb speichern.Speicherlimit für indexeddb auf IE10

Wir stießen auf ein Problem mit IE10, von dem ich vermute, dass es sich um ein Kontingentproblem handelt.

Nach erfolgreichem Speichern einiger Dateien wird ein neuer Anruf an store.put(data, key); niemals beendet.

Grundsätzlich wird die Funktion aufgerufen, aber es wird kein Erfolgsereignis oder Fehlerereignis aufgerufen.

Wenn ich in den IndexedDB-Ordner von IE 10 schaue, sehe ich eine Handvoll von was aussieht wie temporäre Dateien (von jeweils 512 kB) erstellt und auf unbestimmte Zeit entfernt.

Wenn ich auf das "Cache and Database" -Parameterfenster schaue, sehe ich, dass die Datenbank meiner Site 250 MB erreicht hat.

Weiter suchen, fand ich diesen Blog-Eintrag http://msdnrss.thecoderblogs.com/2012/12/using-html5javascript-in-windows-store-apps-data-access-and-storage-mechanism-ii/, die übrigens besagt, dass das Speicherlimit für Windows Store-Anwendungen 250 MB ist.

Ich verwende keine Windows Store-Mechanismus, aber ich dachte, ich könnte Opfer der gleichen willkürlichen Grenze sein.

Also, meine Frage ist:

  • Gibt es eine Möglichkeit, diese Grenze zu umgehen? Der Benutzer wird nach der Erlaubnis gefragt, ein Limit von 10 MB zu überschreiten, aber ich sah keine Frage beim Benutzer, als die 250 MB erreicht wurden.

  • Gibt es eine andere Möglichkeit, mehr als 250 MB Daten mit IE10 zu speichern.

Danke, ich nehme keine Hinweise.

+0

Ich weiß, das ist eine alte Frage, aber haben Sie eine Lösung für IE nicht feuern Erfolg oder Fehlerhandler, wenn die Quote erfüllt ist? Ich verwende indexedDB, um große Datenmengen zwischenzuspeichern. Wenn das Limit erreicht ist, bleibt der Prozess hängen, keine Fehler- oder Erfolgsrückrufe. Es ist sehr schwierig, einen 'LRU'-Cache zu implementieren, wenn er voll ist. – ste2425

+0

Ignoriere meinen letzten Kommentar, zu spät um ihn zu bearbeiten. IE schließt nicht ab. Aber es feuert den 'onabort'-Handler nicht den Fehlerhandler. – ste2425

Antwort

5

Ich fürchte, du kannst nicht. Die Bereitstellung des Speicherlimits und die Aufforderung an den Benutzer, mehr Speicherplatz zuzulassen, liegt in der Verantwortung des Browseranbieters. Also denke ich nicht, dass die erste Option anwendbar ist.

Ich weiß, dass der Benutzer einer Website erlauben kann, ein Geben zu überschreiten (Internetoptionen> Allgemein> Browserverlauf> Einstellungen> Caches und Datenbanken), aber ich weiß nicht, ob das die 250MB übersteuert. Es kann sein, dass dies ein fest codiertes Limit ist, das Sie nicht überschreiten können.

Dieser Grenzwert ist an eine Domäne gebunden, was bedeutet, dass Sie ihn nicht lösen können, indem Sie mehrere Datenbanken erstellen. Die einzige Lösung wäre, auf mehreren Domains zu speichern, aber in diesem Fall können Sie nicht darauf zugreifen. Auch, wie ich sehe, wird die 250 MB Grenze für indexeddb API und File API kombiniert werden

+2

Ich hatte Angst vor so etwas. Wenn ein Benutzer einen Wert höher als 250 unter "Benachrichtigen bei Überschreiten eines Website-Caches oder einer Datenbank" festlegt, können wir dieses Limit erreichen. Wenn der Benutzer jedoch auf OK klickt, damit die Website dieses Limit überschreiten kann, wird derselbe Fehler (unendlicher Hintergrundprozess) angezeigt.Leider können wir kein Limit höher als 999 MB setzen (verdammt Microsoft, warum denkst du immer, du bist schlauer als deine Benutzer) – Thomas

+1

Auf der anderen Seite, warum möchten Sie diese Datenmenge auf einem Client speichern? Vielleicht müssen Sie das Konzept, das Sie jetzt verwenden, neu gestalten. Ich habe einen Artikel gelesen, der darauf hinweist, dass die indexeddb API bis zum 250mb Punkt interessant ist. Darüber hinaus würde es Leistung verlieren ... –

+5

Wenn Sie eine HTML5-Anwendung im Gegensatz zu einer herkömmlichen Desktop-App schreiben, möchten Sie möglicherweise 250 MB Daten in IndexedDB speichern, aus dem gleichen Grund, aus dem eine herkömmliche Desktop-App derzeit so viele Daten speichert auf die Festplatte. Zum Beispiel arbeite ich als Hobby an einem rein clientseitigen Spiel, das IndexedDB-Datenbanken von mehr als 100 MB produzieren kann (theoretisch könnten sie unendlich groß sein, wenn das Spiel lang genug läuft, aber ich habe nicht viel getestet mehr als 100 MB), und in meinen sehr unwissenschaftlichen Tests hatte ich keine Leistungsprobleme. – dumbmatter