Asynchrone API
De asynchrone API methoden geven feedback zonder de oproepende thread te blokkeren.
Om asynchrone toegang tot een database te verkrijgen roep je open()
op het indexedDB
attribuut van een window object. Deze methode stuurt een IDBRequest object (IDBOpenDBRequest); asynchrone operaties communiceren met de oproepende applicatie door events uit te voeren op IDBRequest objecten.
Notitie: Het indexedDB
object heeft een prefix in oudere browserversies (eigendom mozIndexedDB
in Gecko < 16, webkitIndexedDB
in Chrome, en msIndexedDB
in IE 10).
IDBFactory
voorziet toegang tot een database. Dit is de interface die geïmplementeerd is door het globale objectindexedDB
en het is daarom het startpunt van de API.IDBCursor
itereert over object stores en indexen.IDBCursorWithValue
Itereert over object stores en indexen en stuurt de huidige waarde van de cursor terug.IDBDatabase
stelt een connectie naar de database voor, het is de enige manier om een transactie te verkrijgen op de database.IDBEnvironment
voorziet toegang tot een client gebaseerde database. Het is geïmplementeerd door window objecten.IDBIndex
voorziet toegang tot de metadata van een index.IDBKeyRange
definieert een bereik van sleutels.IDBObjectStore
stelt een object store voor.IDBOpenDBRequest
stelt een aanvraag voor om de database te openen.IDBRequest
voorziet toegang tot resultaten van asynchrone aanvragen naar databases en database objecten. Je verkrijgt dit wanneer je een asynchrone methode oproept.IDBTransaction
stelt een transactie voor. Je maakt een transactie op de database, specifieert de omvang (zoals welke object stores je toegang toe wil verkrijgen), en bepaal de soort van toegang die je wil (enkel lezen of schrijven).IDBVersionChangeEvent
duidt aan dat de versie van de database is veranderd.
Een vroege versie van de specificatie definieert ook deze nu verwijderde interfaces. Ze zijn nog steeds gedocumenteerd in geval u oudere code moet aanpassen:
IDBVersionChangeRequest
stelt een aanvraag voor om de versie van een database te veranderen. De manier om de database aan te passen is sindsdien veranderd (doorIDBFactory.open()
op te roepen zonder ookIDBDatabase.setVersion()
op te roepen), en de interfaceIDBOpenDBRequest
heeft nu de functionaliteit van het verwijderdeIDBVersionChangeRequest
.IDBDatabaseException
stelt uitzonderingcondities voor die kunnen voorkomen bij het uitvoeren van database operaties.
Er is ook een synchronone versie van de API. De synchrone API is nog in geen enkele browser geïmplementeerd. Het is bedoeld om te werken met WebWorkers.
Opslaglimieten
Er is geen limiet op een enkel database item qua omvang.
Echter kan er wel een limiet zijn op elke indexedDB database omvang.
Deze limiet (en hoe de gebruikerinterface deze zal verklaren) kan variëren per browser.
-
Firefox: geen limiet op de IndexedDB database omvang. De gebruikersinterface zal enkel permissie vragen om blobs groter dan 50MB op te slaan. Deze quota kan aangepast worden via de
dom.indexedDB.warningQuota
instelling (dewelke gedefinieerd is in https://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js). - Google Chrome: zie https://developers.google.com/chrome...rage#temporary
Voorbeeld
Een krachtig voorbeeld waarvoor indexedDB gebruikt kan worden op het web is een voorbeeld door Marco Castelluccio, winnaar van de IndexedDB Mozilla DevDerby. De winnende demo was eLibri, een bibliotheek en eBook lezer applicatie.
Browsercompatibiliteit
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Asynchronous API |
24.0 |
16.0 (16.0) 4.0 (2.0) moz |
10 | 15.0 | Not supported |
Synchronous API (used with WebWorkers) |
Not supported | Not supported See bug 701634 |
Not supported | Not supported | Not supported |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Asynchronous API | Not supported | 6.0 (6.0) moz | Not supported | Not supported | Not supported |
Er is ook de mogelijkheid om IndexedDB te gebruiken op oudere browsers die WebSQL ondersteunen door gebruik te maken van IndexedDB Polyfill.
Zie ook
- Basic Concepts About IndexedDB
- Using IndexedDB
- Storing images and files in IndexedDB
- A simple TODO list using HTML5 IndexedDB. Note: Deze zelfstudie is gebaseerd op een oude versie van de specificatie en werkt niet met up-to-date browsers: bijvoorbeeld: Het gebruikt nog steeds deverwijderde
setVersion()
methode. - Indexed Database API specification
- IndexedDB — The Store in Your Browser
- IndexedDB Examples
- IndexedDB Polyfill voor browsers die enkel WebSQL ondersteunen (vb. mobile WebKit)
- JQuery IndexedDB plugin