IndexedDB is het ingebouwde opslagsysteem van de browser voor grote, gestructureerde data. Lees wat het is, hoe het werkt en wanneer websites het gebruiken in plaats van local storage of session storage.
Heb je weleens een webapp gebruikt die gewoon bleef werken toen je internet wegviel? Of een app die net zo snel voelde als een native app op je telefoon, waarbij grote hoeveelheden data direct laadden? Achter zulke ervaringen zit meestal iets veel krachtigers dan de simpele opslagmiddelen van de browser die we tot nu toe hebben besproken. Dat is IndexedDB.
IndexedDB is de krachtigste vorm van browseropslag en zit een niveau boven wat local storage en session storage aankunnen. De meeste eigenaren van een bedrijfswebsite komen er nooit direct mee in aanraking, maar als je het kent, heb je een compleet beeld van wat browsers kunnen opslaan.
Wat is IndexedDB?
IndexedDB is een low-level database die in de browser zit ingebouwd. Local storage en session storage bewaren simpele sleutel-waardeparen van tekst. IndexedDB kan gestructureerde data opslaan: objecten, arrays, bestanden en binaire data. Het is doorzoekbaar, kan geïndexeerd worden en kan veel meer data opslaan dan de andere vormen van browseropslag.
De naam verraadt al hoe het werkt. Het gebruikt indexen, een soort opzoektabellen, om opgeslagen records snel te vinden zonder alles te hoeven doorzoeken. Daardoor is het praktisch om grote hoeveelheden gestructureerde informatie in de browser zelf op te slaan en op te halen.
Hoe verschilt IndexedDB van andere browseropslag?
Local storage bewaart kleine tekstwaarden en houdt ze onbeperkt vast. Session storage doet hetzelfde, maar alleen voor de huidige tabbladsessie. Beide zijn simpel en beperkt. IndexedDB is wat omvang en mogelijkheden betreft totaal anders.
Opslagcapaciteit is een van de belangrijkste verschillen. Local storage is meestal beperkt tot 5 tot 10 megabyte, terwijl IndexedDB afhankelijk van de browser en het apparaat honderden megabytes of meer kan opslaan. Het slaat ook complexe datastructuren direct op, niet alleen gewone tekst. En het ondersteunt zoekvragen, dus de website kan opgeslagen records doorzoeken en filteren in plaats van alleen een waarde op te halen met de exacte sleutel.
Waarvoor gebruiken websites IndexedDB?
Offline werken
Webapps die zonder internetverbinding moeten werken, gebruiken IndexedDB om data lokaal op het apparaat op te slaan. Een notitie-app, een projectbeheertool of een e-mailprogramma kan records in IndexedDB bewaren, zodat de bezoeker ook offline content kan lezen, maken en bewerken. Zodra er weer verbinding is, worden de wijzigingen met de server gesynchroniseerd.
Grote datasets in de browser
Toepassingen die met grote hoeveelheden data werken, zoals kaarten, complexe filters of grote productcatalogi, kunnen IndexedDB gebruiken om die data lokaal te cachen. Zo hoeft de app minder vaak data bij de server op te halen en wordt de ervaring voor de gebruiker een stuk sneller.
Bestanden opslaan
IndexedDB kan bestanden direct in de browser bewaren. Dat is handig voor apps waarin gebruikers content uploaden of maken die over meerdere sessies beschikbaar moet blijven voordat die naar de server wordt gestuurd.
Gebruiken de meeste websites IndexedDB?
Nee. IndexedDB wordt gebruikt door complexe webapplicaties, niet door gewone bedrijfswebsites. Een marketingsite, een dienstenwebsite, een webshop en de meeste contentsites hebben het niet nodig. Hun opslagbehoeften worden prima gedekt door cookies, local storage en session storage.
Voor je eigen website neemt het platform waarop je bouwt alle keuzes over opslag voor zijn rekening. De Websitebouwer van WEMASY gebruikt voor elke functie automatisch de juiste opslagvorm. Wil je alle soorten browseropslag naast elkaar zien en weten hoe ze samenhangen, lees dan soorten browseropslag.
Veelgestelde vragen
Is IndexedDB een echte database?
Het is een database in de zin dat het gestructureerde data opslaat, indexen ondersteunt en zoekvragen toestaat. Maar het is heel anders dan een database op een server. Het draait volledig in de browser op het apparaat van de bezoeker, niet op een externe server. Het is bedoeld voor opslag aan de kant van de bezoeker, niet voor het gedeelde beheer van data door meerdere gebruikers dat serverdatabases doen. Met de Websitebouwer van WEMASY stel je dit direct in op je website.
Hoeveel data kan IndexedDB opslaan?
Veel meer dan local storage of session storage. De meeste browsers laten IndexedDB een flink deel van de beschikbare schijfruimte gebruiken, vaak honderden megabytes of meer. De browser kan de gebruiker om toestemming vragen als een website heel veel wil opslaan. De exacte limiet verschilt per browser en hangt ook af van de vrije ruimte op het apparaat.
Blijft IndexedDB-data bewaard als de browser sluit?
Ja. IndexedDB-data blijft standaard bewaard, net als bij local storage. Het blijft in de browser staan tot de gebruiker zijn browsergegevens wist of tot de website het verwijdert. Daardoor is IndexedDB geschikt voor offline toepassingen waarbij data tussen sessies bewaard moet blijven.
Is IndexedDB veilig?
IndexedDB is per website afgescheiden, dus een website kan niet bij de data van een andere site. Maar net als andere vormen van browseropslag is het toegankelijk voor scripts op de pagina. Gevoelige gegevens zoals wachtwoorden, betaalgegevens en persoonlijke informatie sla je nooit op in IndexedDB. Het is geschikt voor applicatiedata en grote content, maar vervangt geen veilige opslag op de server.
Kunnen bezoekers hun IndexedDB-data wissen?
Ja. Als je browsergegevens wist via de browserinstellingen, verdwijnt IndexedDB samen met cookies, local storage en cache. Bezoekers kunnen het ook wissen via de ontwikkelaarstools. Toepassingen die voor belangrijke data van IndexedDB afhankelijk zijn, houden daar rekening mee door data met een server te synchroniseren zodra er verbinding is, zodat de lokale data nooit de enige kopie is.
Moet ik iets van IndexedDB weten om een website te bouwen?
Nee. IndexedDB is een hulpmiddel voor ontwikkelaars die complexe webapplicaties bouwen. Als website-eigenaar op een platform kom je er nooit direct mee in aanraking. Je websitebouwer regelt de keuzes over browseropslag op de achtergrond. IndexedDB kennen is nuttig voor een compleet beeld van hoe browsers werken, maar het heeft geen praktische invloed op hoe je je website dagelijks beheert.