Experiências do Google com armazenamento de valor-chave

O Google anunciou recentemente (link em Inglês) sua intenção de enviar duas novas propostas do WICG em uma versão futura do Chrome. KV Storage (armazenamento de valor-chave) tenta trazer a conveniência do LocalStorage, mas com melhor desempenho. A intenção é entregar isso como o primeiro exemplo de um módulo integrado, aproveitando a proposta de mapas de importação.

O ecossistema JavaScript teve uma abordagem um pouco fraturada para armazenar e armazenar dados em cache localmente. Conforme explicado por Philip Walton, engenheiro de software do Google que trabalha na plataforma Web,

Os fornecedores de navegadores e especialistas em desempenho da Web têm dito, durante boa parte da última década, que o localStorage é lento e os desenvolvedores da Web devem parar de usá-lo. Para ser justo, as pessoas dizendo isso não estão erradas. localStorage é uma API síncrona que bloqueia o thread principal e, sempre que você acessá-lo, você pode impedir que sua página seja interativa. O problema é que a API localStorage é tão tentadoramente simples, e a única alternativa assíncrona ao localStorage é o IndexedDB, que (vamos encarar isso) não é conhecido por sua facilidade de uso ou API de boas-vindas.

A Web Incubator CG (WICG) recentemente promoveu o KV Storage para fazer parte da especificação do W3C IndexedDB. KV Storage semelhante ao localStorage no utilitário, mas mais moderno e fica em camadas em cima do IndexedDB. A especificação exige que ele seja implementado pelos fornecedores de navegadores como um módulo interno e use o IndexedDB como seu backing store.

Exemplo de uso da API de armazenamento KV conforme fornecido pela especificação:

import { storage } from "std:kv-storage"; // specifier prefix not final

(async () => {
  await storage.set("mycat", "Tom");
  console.assert(await storage.get("mycat") === "Tom");

  for await (const [key, value] of storage.entries()) {
    console.log(key, value);
  }
  // Logs "mycat", "Tom"

  await storage.delete("mycat");
  console.assert(await storage.get("mycat") === undefined);
})();

Existe um polyfill de Armazenamento KV para navegadores que suportam IndexedDB.

O módulo KV Storage é resolvido conforme definido na iniciativa Biblioteca Padrão do JavaScript e seu suporte para mapas de importação.

Os mapas de importação não são um conceito novo e faziam parte de sistemas de módulos JavaScript anteriores, como AMD e sistemas de módulos em outras linguagens de programação. Sua inclusão com módulos ES padrão é nova. Essa proposta de mapas de importação fornece controle sobre as URLs obtidas por instruções de importação JavaScript e expressões import () e permite que o mapeamento seja reutilizado em contextos que não são de importação. Os mapas de importação permitem instruções de importação simplificadas, resoluções de módulo de fallback, polyfills para módulos internos e compartilhamento de contextos entre as tags de busca, de imagem e de link e muito mais.

A implementação bem-sucedida desses dois novos recursos altamente esperados deve melhorar significativamente o processo pelo qual os recursos são adicionados a versões futuras do JavaScript e fornecer APIs da Web adicionais convenientes. Importar mapas e módulos embutidos se esforçam para resolver uma parte faltante do manifesto web extensível.

Os desenvolvedores que desejam experimentar hoje com armazenamento KV pode alavancar o polyfill, ou instalar um Dev Chrome ou a versão Canárias de Chrome 74. Antes do lançamento dominante desses recursos, os desenvolvedores podem tornar esses recursos disponíveis para todos os usuários Chrome 74+ para domínios específicos, registando interesse no teste de original do Armazenamento KV.

Deixe um comentário