IndexedDB är ett JavaScript - applikationsprogrammeringsgränssnitt ( API ) för lagring på klientsidan av stora mängder strukturerad data, inklusive filer / blobbar . Det är med andra ord ett NoSQL - datalager i JSON-format inuti webbläsaren . Standarden har utvecklats av W3C och implementerad i webbläsare sedan 2011. [ett]
Stöd för IndexedDB lades till i Firefox version 4, [2] Google Chrome version 11, [3] och Internet Explorer version 10. [4] Safari lade så småningom till stöd i version 8. [5]
Web SQL-databasen var en föregångare API som utvecklats av Apple . [6] Men Mozilla motsatte sig dess standardisering eftersom inga alternativ till SQLite -motorn erbjöds . [7] [8] Som sådan har den avskaffats till förmån för IndexedDB .
I databasen kan IndexedDB- webbplatser permanent lagra och läsa klientlagringsdata. Varje domän har sitt eget lagringsområde, åtkomst till data lagrad i en annan domän tillhandahålls inte i enlighet med Same Origin Policy . Mängden tillgängligt minne varierar beroende på webbläsare, det finns vanligtvis en fast gräns som inte kan överskridas och en mjuk gräns från vilken användaren först måste godkänna lagring. [9] I princip är lagring permanent, men webbläsare erbjuder sina användare möjligheten att radera lagrad data. [tio]
En databas är en objektdatabas, vanligtvis lagrade JavaScript-objekt, med en av posterna som nyckeln för att hämta data. Index kan också skapas på andra lagrade objektposter för att möjliggöra effektiva uppslagningar.
Databasåtkomst är asynkron: klienten gör en begäran och registrerar återuppringningsfunktioner. Så snart resultatet av begäran är känt kommer han att informeras om det och, i händelse av framgång, kommer de begärda uppgifterna att tillhandahållas, i händelse av fel, orsaken. Vid åtkomst används transaktioner för att säkerställa datakonsistens, även om till exempel två samtidigt öppna flikar har oberoende åtkomst till databasen.
Den exakta implementeringen av databasen är inte fixerad, men det är ett B-träd . Alla moderna webbläsare stödjer standarden då den ständigt utvecklas, inte alltid i den aktuella versionen. I Microsofts webbläsare är gränssnittet endast delvis implementerat. [10] Äldre versioner av webbläsarens API har fortfarande delvis prefixet av utvecklaren. [elva]
Web Storage är ett mycket enklare alternativ till datalagring, men med färre funktioner, designat för en liten mängd data.
En alternativ standard, som är en databas som kan nås via SQL - frågor, var Web SQL . Denna standard implementerades dock bara i ett fåtal webbläsare, så den avbröts till förmån för IndexedDB . [12]
I äldre webbläsare kan IndexedDB modelleras med polyfills . [13]