Firefox krijgt ondersteuning voor IndexedDB

Bèta negen van Firefox 4 ondersteunt IndexedDB, een database-standaard waarmee data offline in de browser opgeslagen kan worden. Verder heeft Mozilla bekend gemaakt dat de definitieve versie van Firefox 4 in februari zal uitkomen.

IndexedDB is volgens Mozilla geschikt voor het opslaan van grote hoeveelheden data op een personal computer. Hierdoor zou de gebruiker ook offline over allerhande informatie kunnen beschikken, waarbij Mozilla onder andere webmail en tv-gidsen als mogelijke toepassingen aandraagt.

De Firefox-bouwer verwijst naar documentatie over de IndexedDB-standaard bij de W3C, maar laat wel weten dat nog niet alle browsers IndexedDB ondersteunen. Het is echter al bekend dat Google IndexedDB in Chrome zal opnemen en dat Microsoft een experimentele extensie voor Internet Explorer beschikbaar heeft.

Mozilla heeft verder op een mailinglist voor ontwikkelaars laten weten dat een release candidate voor Firefox 4 op korte termijn zal verschijnen, vermoedelijk begin februari. De officiële release zou vervolgens eind februari kunnen uitkomen. Tot die tijd moeten nog circa 160 kritieke bugs verholpen worden.

Door Dimitri Reijerman

Redacteur

13-01-2011 • 17:24

49

Reacties (49)

49
48
38
0
0
6
Wijzig sortering
Ik vind deze toepassing niet erg bij deze tijd passen. Ik gebruik een browser nooit offline, omdat ik nooit offline ben. En op het moment dat je iets opslaat, is het offline alweer achterhaald. Een tv gids zal misschien lang 'juist' blijven, maar uiteindelijk moet je toch weer een laatste versie ophalen, toch? Wat denken jullie?
Anoniem: 312839 @CybeRolf13 januari 2011 18:03
Je kunt het ook gebruiken om voorkeursinstellingen van een Javascriptapplicatie op te slaan, zonder dat de serverkant er iets mee te maken heeft.

Denk bijvoorbeeld aan fotobewerkers en dat soort "apps".
Ja. Of het onthouden van welke 'dialogs' je open hebt staan, op welke posities. Posities van sliders. Inhoud van forms en zoekvelden e.d. Voorkeuren. Eigenlijk alles wat nu of in je profiel moet (op de server, dus duur voor de aanbieder) of in cookies (beperkte ruimte, slecht doorzoekbaar formaat).
Ik vind offline mogelijkheden juist erg bij deze tijd passen. In deze tijd verwacht je altijd je applicaties te kunnen gebruiken. Iets dat niet meer werkt omdat er geen verbinding is, om wat voor reden dan ook, is echt jaren 90.
Als voorbeeld heb ik een app voor m'n iphone, een augmented reality app die je ook onderweg kunt gebruiken (op dat soort momenten werkt ie juist het best :p), maar ik kan op het moment alleen netwerk gebruiken via wifi, dus niet onderweg. Het heeft een basic achievement systeem, maar de achievements die je onderweg haalt, unlocken niet, omdat er geen verbinding is. Waarom kan zo'n app zoiets iets cachen en het updaten als er weer wifi is? En ja, dit is een recent gemaakte app.
Aangezien een hoop applicaties tegenwoordig óf direct op het web staan als webapp, óf netwerkmogelijkheden hebben, zijn offline caching mogelijkheden juist heel erg bij de tijd. Sterker nog, ze zijn nodig om webapps meer algemeen aanvaard te maken. Dat soort dingen kunnen alleen doorbreken als je ze altijd en overal aan kunt spreken. Denk bv aan een Google Docs als vervanging van het dure MS Office. Je wilt toch ook onderweg je documenten kunnen blijven bewerken, niet alleen als je toevallig internet hebt, en dan nog met een snelheid die je werkzaamheden niet vertraagd (zoals dat slome 3G...).
Hmm,., volgens mij leven we in warrige tijden.
Eerst waren alle applikaties offline.
Toen kwam het internet en begon de migratie naar online.
Nu is die online markt voor applikaties nog niet eens uitgegroeid en we moeten weer online applikaties lokaal gaan cachen om offline te gebruiken. :/
Ik bedoel, waarom moet het dan nog uberhaupt in een webbrowser draaien?
Dat gaat toch eigenlijk nergens meer over?
Het hele idee van online apps is dat je niet meer afhankelijk bent van local storage en dat je op een willekeurige browser je eigen omgeving voor je krijgt.
Door dit soort gedoe ben je eigenlijk op een ongelovelijk inefficiente manier lokale apps met internetfunctionaliteit aan het draaien.
Zonde van alle energie.
Er zit wel een lijn in: de beschikbaarheid van de applicatie gaat wel omhoog.

Eerst had je de applicatie op jouw computer, maar die kun je alleen op die computer of locale server gebruiken. Daarna had je websites, die begonnen steeds meer op applicaties te lijken en kon je van 'overal' op de wereld gebruiken, maar dan ben je nog wel afhankelijk van de internet verbinding.

Offline-cache, localstorage, sessionstorage en evt. indexeddb zorgen er voor dat de webapplicatie ook blijft werken als je even niet meer verbonden met de website. Zoals wanneer je buitenbereik van je wireless bent met je laptop, oid.

Javascript en HTML5/CSS/SVG/etc. zijn nu zo handig geworden dat je een webapplicatie kunt maken om bijvoorbeeld afbeeldingen te bewerken die je van je desktop naar de browser sleept en daarbinnen bewerkt zonder maar contact met de server gehad te hebben in de tussen tijd.
Het is ook niet per se bedoeld voor offline browsing. Dat zou een bijkomend voordeel kunnen zijn. Het is lokale caching van (oa. jouw user) data. Voor een gebruiker betekend dit dat webapps net zo snappy kunnen aanvoelen als native apps. Voor een developer kan dat beteken dat hij resources kan besparen door gebruik te maken van clientside rekenkracht en storage.

Ik denk dat veel developers hier mee aan de slag zouden willen gaan maar door de enorme versnippering in de verschillende browsers is het nu niet te doen.
Ik denk dat je deze technieken niet in verband moet gaan zien met traditionele websites, maar meer richten applicaties moet gaan denken.

Denk bijvoorbeeld aan een HTML5 waar een high score wordt bijgehouden en, wanneer je weer internet hebt, automatisch wordt verstuurd naar de globale server.

Of Google Docs, waarbij je off-line een document kunt maken die later ook online te zien is (zonder zelf te uploaden, omdat de "app" dit al doet).


Zelf bouw ik web applications (geen normale websites dus) en ik ben blij dat dit eindelijk mogelijk is. Nu ka ik, en mijn klanten, zelfs op vreemde locaties zonder internet gebruik maken van een applicatie.
Is dit niet hetzelfde als wat Google al eerder deed met Gears?
Gears is stopgezet omdat veel van Gears met HTM5 te doen is, o.a localstorage, waar bijvoorbeeld Safari en Chrome SQLLite voor gebruiken als ik me niet vergis.

edit:

We hebben het hier blijkbaar niet over javascripts 'localstorage' of wel? Werd me niet echt duidelijk aan de hand van het artikel.

[Reactie gewijzigd door ZpAz op 23 juli 2024 06:03]

Anoniem: 96523 @ZpAz13 januari 2011 20:54
Er zijn 3 verschillende soorten opslag die uitvloeien uit HTML5:

- LocalStorage: een verijdelde cookie (oneindig), maar kan tot 5MB data opslaan (text-only).
- SessionStorage: net als LocalStorage, maar verdwijnt na sessie (dus sluiten van browser).
- IndexedDB: een soort database die off-line gebruikt kan worden en, actief, gesynchroniseerd wordt met een "normale" database (bv SQL).

Daarnaast is/was er ook nog 'WebSocket', een SQL database geschreven in Javascript. Deze kan passief synchroniseren met een "normale" SQL database wanneer er weer een internetverbinding is.


Maar ik ben het met je eens, het wordt er niet gemakkelijker op, wel leuker :D
WebSocket is de mogelijkheid om via Javascript verbindingen te openen met een server. Hierdoor wordt het mogelijk om dingen vanaf een server naar de client te pushen, i.p.v. dat de client de server moet pollen. Of het uberhaupt doorgaat het hele WebSocket verhaal is nog even de vraag overigens, vanwege security issues.
Bovendien gaat het ook niet werken bij een NAT zonder UPnP.
Natuurlijk werkt dat wel door NAT. De browser opent de verbinding, als die eenmaal open is kan de server ook gewoon data naar de client sturen. Alleen als er te lang geen data over de verbinding gaat (denk aan een kwartier o.i.d.) kan de router denken dat de verbinding gesloten is, maar daarvoor kan je gewoon een heartbeat sturen om de zoveel tijd. Ik heb me nog niet verdiept in WebSockets, maar het zou me niet verbazen als dat al onderdeel van het protocol is.
Op dit moment ligt WebSockets een beetje op zijn gat omdat het originele protocol via HTTP-upgrade-methode zou werken. Maar omdat mensen zijn die transparante proxy-servers gebruiken kan daardoor een cache-veiligheidsprobleem ontstaan. Dus moet het nu eerst aangepast worden naar HTTP-Connect, oid.
Een verijdelde cookie - het klinkt haast Freudiaans. ;-) Ik zou het eerder een veredelde cookie noemen....
Niet helemaal; dit is puur voor het opslaan van data (beetje veredeld caching mechanisme), en Gears meer voor (offline) functionaliteit (tekortkomingen in de browser en html4).
Anoniem: 312839 13 januari 2011 17:59
Toch lijkt WebDatabase me vaker makkelijker? Zie bijvoorbeeld het verschil in aantal regels in voorbeeld 4 op Firefox' eigen blog (als het iets netter geschreven zou zijn)
Bij dat voorbeeld 4 staat "IndexedDB does not currently have an API specified for doing a join between different object stores. As a result, the example opens a cursor to the kids object store and an object cursor on the kidId index on the candySales object store and performs the join manually" [own emphasize]. Dit lijkt me dus een tijdelijk probleem?

Verder lijkt het dat ze er fier op zijn geen SQL nodig te hebben omdat hun API dat regelt. Dat zal wel een persoonlijke voorkeur zijn, zeker? :P
WebDatabase is deprecated* en IndexedDB is de opvolger ervan. Voor zover ik weet is IndexedDB ook nog lang niet af als standaard, dus eigenlijk is het ook raar dat FireFox een nog niet voltooide, en aan verandering onderhevige, standaard nu al implementeert. Dan kunnen ze beter wachten dat de standaard in een verdere mate van af is, en dan met de implementatie komen. Op het moment dat er nu al zijn die het gaan gebruiken zit je op het moment dat de standaard af is met twee of meer, afwijkende, implementaties die je al dan niet moet ondersteunen. Voor de rest zal het ook afhangen van de kennis van de designer wat fijner werkt, iemand die ook programmeert zal waarschijnlijk het typen van rechtstreekse queries makkelijker vinden, maar iemand die alleen maar javascript kent zal waarschijnlijk beter met een API als IndexedDB uit de voeten kunnen.

* WebDatabase is deprecated o.a. omdat er 2 verschillende implementaties van moeten zijn om een standaard te worden, en alle browsers die het implementeren dezelfde implementatie hebben, namelijk op basis van SQLite.
Zo werkt standaard ontwikkeling niet. Veel al wordt een neuwe webstandaard eerst door 1 of 2 browser bouwers geimplementeerd zodat het uitgeprobeerd kan worden en daarna wordt het een standaard.

Daarom zijn er ook al die: -moz-, -webkit-, -ms-, -opera- css properties.

Als het is opgenomen in de standaard, dan kan het -moz-, etc. voorvoegsel weg.

Ik dacht dat deze video het uitlegt:
http://vimeo.com/15755349

[Reactie gewijzigd door Lennie op 23 juli 2024 06:03]

ik ben benieuwd naar de release. ze moeten namelijk dan erg hard door werken voor eind februari te halen
Valt heel erg mee. Ik draai nu al een tijdje beta8. Er moeten nog wat puntjes op de i worden gezet maar voor de rest heel goed ding.
Beta 10 geeft hier bij html5test.com nog geen IndexedDB. |:(

@Jazco2nd: 4.0b10pre (2011-01-12).

[Reactie gewijzigd door GieltjE op 23 juli 2024 06:03]

Dat is dus minefield (nightly build).
Niet in de beta 9 en ook niet met de nightly. Misschien een bug in html5test.com ?
Ik dacht dat er geen nieuwe functies meer gingen bijkomen vanaf 4.0b7?
Het is ook geen nieuwe functie, maar een andere database ;)
Er kwam ook eindelijk een 64bits versie in 4.0, of hebben ze dat nog eens uitgesteld?
Dit gaat nog steeds door :D

Kijk zeker uit naar de release van FF4
Zefls van Firefox 3.x zijn al jaren 64-bit versies. Voor Windows komt voor versie 4 ook een 64-bit versie.
Cookies++?

Edit: wat ik hiermee bedoelde is dat kwaadwillende en / of advertentie sites hier niet meer misbruik zouden van kunnen maken, door nog meer data lokaal bij de thuisgebruiker op te kunnen slaan dan eerder met cookies mogelijk was.. Maar om eerlijk te zijn heb ik de W3C specs ook niet doorgelezen.

[Reactie gewijzigd door Oerdond3r op 23 juli 2024 06:03]

Ik hoop dat ze wijs genoeg zijn geweest om third party access tot de database uit te sluiten.
Klopt, en nu kan er tot 5MB aan tekst worden opgeslagen.

Ben er zelf al mee aan het experimenteren in een aantal projecten en moet zeggen; het is zeer handig.

EDIT: ik heb het over LocalStorage, IndexedDB gaat nog een stap verder. Hiermee kun je een online applicatie ook offline gebruiken (write-only).

[Reactie gewijzigd door Anoniem: 96523 op 23 juli 2024 06:03]

Bloated? Het wordt juist steeds lichter heb ik het idee. Ik kan me Firefox 0.6 nog herinneren. FF 4b8 start lekker snel op en is duidelijk supersnel vergeleken met 3.6x.

Zelf gebruik ik ook veel minder extensies. Alleen nog adblockplus (ook een reden om nooit over te stappen) en mouse gestures redox.
Men vergelijkt firefox niet met voorgangers over het algemeen, maar met de concurrentie en als op alle vlakken zelfs IE9 er voorbij schiet qua snelheid en gebruikerservaring, dan doen ze iets niet goed. Van alle browsers is firefox het meest log.
Heb je de beta van v4 al eens geprobeerd? Zeker doen...
Anoniem: 343588 @zenlord13 januari 2011 19:51
gebruik dan meer eens chromium 10 ernaast.

wie zal winnen ? : )
Het maakt niks uit wie er wint als de langzaamste nog steeds snel zat is, gaat erom wat jij zelf prettig vind werken die moet je pakken, snelheid is niet relevant in dit geval wat ze zijn allemaal snel genoeg om prettig surf ervaring te hebben. Ik kijk tenminste weer uit naar FF, vind Chrome helemaal niks, dat is beetje de iphono hype in browser land. :D

IndexedDB lijkt me ook ideaal, vind het juist prettig dat er steeds meet functionaliteit word toegevoegd, je kan dat vanuit gaan dat browser iets standaard heeft, zolang de surf ervaring er niet op achteruit gaat juich ik het toe, beter dan browser waar je eerst van alles moet gaan installeren voordat je iets kan doen. Zeker voor leek is ingebouwde functionaliteit handig, als website daarvan gebruikt maakt, leken gaan niet speciaal plugin downloaden.

[Reactie gewijzigd door mad_max234 op 23 juli 2024 06:03]

Een snellere applikatie zal minder code uitvoeren en dus minder energie verbruiken.
Met alle mobiele apparaten tegenwoordig is hier veel voor te zeggen.
De snelheid op zich is niet zo relevant. Wat ik als gebruiker als prettig ervaar is een applicatie die altijd reageert op input. Iets dat vast lijkt te zitten is ronduit irritant (daarom moet ik ook niks van windows hebben, dat hele OS zit constant vast, maar dat terzijde). Volgens mij doen Chrome en Firefox 4 dit beide niet (ik gebruik FF4 al op m'n werk), dus wat dat betreft maakt het niks uit. Als ze qua performance voor het gevoel hetzelfde werken komt het op features aan, en daar wint toch FF het met grote voorsprong.
Nutteloze benchmarks maken in de praktijk niet zo veel uit als statistici je willen doen geloven. Merk jij echt het verschil tussen 0.2 en 0.1 seconden?
Firefox begint zwaar bloaded te worden.
Deze zin impliceert juist wel dat hij de nieuwe versie van Firefox vergelijk met de oudere versies van diezelfde browser.

En ik ben zelf ook overgestapt op Chrome, maar ik vind IE nog steeds duidelijk logger dan Firefox. Ik open een lege about:blank en dat duurt en duurt met de text 'Connecting...' in de stausbalk?? Wtf??
Was al zeer lang een firefox gebruiker, maar ik ben niet lang geleden overgestapt van Firefox 4 beta op Opera 11, en bevalt me prima. Ik vond firefox toch ook een beetje te traag worden in het opstarten etc.
Chrome vind ik dan weer te 'naakt' en te weinig opties hebben.
Tegenwoordig heeft Chrome ook extenties, waaronder een port van Adblockplus. Ben al een tijdje geleden overgestapt en mis haast niks, alleen Firebug bij development. (maar de ingebouwde development tools bij chrome zijn ook best nice en op sommige punten zelfs beter)
Ehm....
Het is echter al bekend dat Google IndexedDB in Chrome zal opnemen
;)
Dan zul je blij zijn om te horen dat ook Chrome IndexedDB gaat ondersteunen.

(Oh wacht, je comment was over FF in het algemeen en heeft niet zoveel te maken met het artikel ;))
Als developer gebruik je natuurlijk zoveel mogelijk browsers naast elkaar, om te kijken of je sites overal wel goed werkt....

Op dit item kan niet meer gereageerd worden.