Een wijziging in de standaardduurzaamheidsmodus in IndexedDB

De standaardduurzaamheidsmodus in IndexedDB verandert van strict naar relaxed vanaf Chrome 121. Deze aanpassing is bedoeld om de prestaties te verbeteren en aan te sluiten bij andere belangrijke browsers zoals Firefox en Safari. In de blogpost worden de details van deze wijziging en de gevolgen voor webontwikkelaars uitgelegd.

IndexedDB-duurzaamheidsmodi

IndexedDB , een krachtige web-API voor het opslaan van grote hoeveelheden gestructureerde data, biedt twee duurzaamheidsmodi voor readwrite schrijftransacties:

  • strict : deze modus geeft het besturingssysteem expliciet de opdracht om wijzigingen naar de schijf te wissen voordat de complete gebeurtenis wordt uitgegeven.
  • In deze modus wordt relaxed van het standaard flushgedrag van het besturingssysteem. De complete gebeurtenis wordt gegenereerd nadat er wijzigingen in de buffer van het besturingssysteem zijn doorgevoerd. Deze buffer wordt doorgaans elke paar seconden geleegd.

Het is belangrijk om te weten dat strict niet garandeert dat wijzigingen daadwerkelijk direct naar schijf worden geschreven. Nadat een site put() heeft aangeroepen, is er nog een beperkte tijd waarin een stroomstoring ervoor kan zorgen dat de wijziging niet op schijf terechtkomt en dus de volgende keer dat de app wordt uitgevoerd, verloren gaat.

Bij garanties met strict duurzaamheid wordt de gebeurtenis 'IndexedDB Transaction complete pas geactiveerd nadat de gegevens daadwerkelijk zijn weggeschreven. Bij garanties met relaxed duurzaamheid zijn de gegevens nog in het schrijfproces op het moment dat de gebeurtenis ' complete wordt geactiveerd. (Voor meer informatie over het volledige proces, zie deze uitleg ).

strict is eigenlijk alleen van toepassing op bewerkingen waarbij u absoluut zeker moet weten dat het is geschreven voordat u de volgende stap uitvoert. Datamigratie is een voorbeeld waarbij strict duurzaamheid vereist is. Bij het overstappen van de ene back-up naar de andere wilt u het oude formaat niet verwijderen totdat het nieuwe is geschreven. strict duurzaamheid maakt op deze manier een migratieroutine mogelijk die halverwege een storing kan herstellen.

De standaard duurzaamheidsmodus wijzigen

Het cruciale aspect van deze wijziging is de standaardduurzaamheidsmodus voor readwrite schrijftransacties in Chrome. Tot nu toe was de standaardinstelling strict , waarmee onmiddellijke schrijfbewerkingen naar de schijf werden gegarandeerd bij gegevenswijzigingen. Vanwege prestatieoverwegingen en om aan te sluiten bij andere grote browsers die allemaal relaxed gebruiken, is Chrome echter van plan de standaardinstelling te wijzigen naar relaxed .

Deze wijziging is bedoeld om een ​​betere balans te bieden tussen prestaties en dataduurzaamheid. strict zorgt voor maximale dataduurzaamheid, maar relaxed is vaak voldoende voor veel webapplicaties en kan de prestaties aanzienlijk verbeteren op de volgende manieren.

  • Snelheid: in praktijkvoorbeelden zag het Chrome-team snelheidsverbeteringen tussen een factor 3 en 30.
  • Duurzaamheid van schijven, met name voor apparaten met een Solid State Disk (SSD).
  • Langere batterijduur.
  • Verbetering van de leessnelheid. Dankzij de architectuur van IndexedDB, waarbij leestransacties vaak achter schrijftransacties worden geblokkeerd, is de leessnelheid als secundair effect verbeterd.
  • Het hele apparaat ondervindt een positief effect, omdat schijfbewerkingen een gedeelde systeembron zijn.

Interoperabiliteit en compatibiliteit

Een belangrijk aspect van deze wijziging is de impact op interoperabiliteit en compatibiliteit. Door zich aan te passen aan het gedrag van andere grote browserleveranciers, verbetert Chromium de interoperabiliteit. De standaard zelf staat verschillende implementaties toe, en deze wijziging beoogt die implementaties te harmoniseren. Meer historische context over deze wijziging vindt u in deze GitHub Issue .

Wat betekent dit voor webontwikkelaars?

Deze wijziging introduceert geen nieuw API-oppervlak. De bestaande IndexedDB API blijft ongewijzigd en deze wijziging heeft voornamelijk invloed op het standaardgedrag van readwrite transacties. U kunt uw voorkeursmodus voor duurzaamheid opgeven bij het aanmaken van transacties, zodat u controle hebt over de duurzaamheid en prestaties van de gegevens. Het volgende codevoorbeeld laat zien hoe u het oude gedrag kunt terugkrijgen door durability in te stellen op strict in de array met optionele opties.

let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
  db = DBOpenRequest.result;
};
const transaction = db.transaction(
  ['toDoList'],
  'readwrite',
  { durability: 'strict' });

De wijziging lokaal testen voordat deze wordt verzonden

De wijziging wordt van kracht in Chrome 121. Als u het nieuwe gedrag eerst lokaal wilt testen, schakelt u de vlag #indexed-db-default-durability-relaxed in chrome://flags .

Meer informatie

Voor meer technische details en updates over deze wijziging kunt u de trackingbug en de vermelding Chrome Platform Status raadplegen.

Kortom, Chrome's wijziging van de standaardduurzaamheidsmodus in IndexedDB is bedoeld om de prestaties te verbeteren en tegelijkertijd de compatibiliteit met andere belangrijke browsers te behouden. In de meeste gevallen raden we aan om niets te doen, aangezien de nieuwe standaardinstelling voor prestatieverbeteringen zorgt. Indien nodig kunt u uw voorkeursduurzaamheidsmodus blijven specificeren en zo de controle houden over de duurzaamheid en prestaties van uw gegevens in uw webapplicaties.

Dankbetuigingen

Dit artikel is beoordeeld door Evan Stade en Rachel Andrew .