O que é o IndexedDB e quando os websites o usam?

O IndexedDB é um sistema avançado de armazenamento do navegador para dados grandes e estruturados. Vê o que é, como funciona e quando os sites precisam dele.

Rascunho

O IndexedDB é o sistema de armazenamento integrado no navegador para dados grandes e estruturados. Fica a saber o que é, como funciona e quando os websites o usam em vez do armazenamento local ou de sessão.

Já usaste uma aplicação web que continuou a funcionar mesmo quando a internet caiu? Ou uma que parecia tão rápida como uma aplicação nativa instalada no telemóvel, com grandes quantidades de dados a carregar de imediato? Por trás dessas experiências está normalmente algo muito mais capaz do que as ferramentas básicas de armazenamento do navegador de que já falámos. Esse algo é o IndexedDB.

O IndexedDB é o tipo de armazenamento do navegador mais capaz que existe, e fica um nível acima daquilo que o armazenamento local e o armazenamento de sessão foram feitos para tratar. A maioria dos donos de websites de empresas nunca vai interagir com ele diretamente, mas percebê-lo dá-te uma imagem completa do que os navegadores conseguem guardar.

O que é o IndexedDB?

O IndexedDB é uma base de dados de baixo nível integrada no navegador. Ao contrário do armazenamento local e do armazenamento de sessão, que guardam simples pares chave-valor de texto, o IndexedDB consegue guardar dados estruturados: objetos, listas, ficheiros e dados binários. É pesquisável, indexável e capaz de guardar muito mais dados do que os outros tipos de armazenamento do navegador.

O nome dá uma pista sobre como funciona. Usa índices, que são como tabelas de consulta, para encontrar depressa os registos guardados, sem ter de pesquisar tudo. Isto torna-o prático para guardar e recuperar grandes quantidades de informação estruturada no próprio navegador.

Em que difere o IndexedDB de outros tipos de armazenamento do navegador?

O armazenamento local guarda pequenos valores de texto e mantém-nos indefinidamente. O armazenamento de sessão faz o mesmo, mas só durante a sessão do separador atual. Ambos são simples e limitados. O IndexedDB é fundamentalmente diferente em âmbito e capacidade.

A capacidade de armazenamento é uma das principais diferenças. Enquanto o armazenamento local costuma estar limitado a 5 a 10 megabytes, o IndexedDB pode guardar centenas de megabytes ou mais, consoante o navegador e o dispositivo. Também guarda estruturas de dados complexas diretamente, não só texto simples. E suporta consultas, ou seja, o website pode pesquisar e filtrar registos guardados, em vez de apenas recuperar um valor pela sua chave exata.

Para que os websites usam o IndexedDB?

Funcionamento offline

As aplicações web que precisam de funcionar sem ligação à internet usam o IndexedDB para guardar dados localmente no dispositivo. Uma aplicação de notas, uma ferramenta de gestão de projetos ou um cliente de email podem guardar registos no IndexedDB para o visitante poder continuar a ler, criar e editar conteúdo mesmo offline. As alterações sincronizam de volta com o servidor quando a ligação regressa.

Grandes conjuntos de dados no navegador

As aplicações que trabalham com grandes quantidades de dados, como mapas, filtros complexos ou grandes catálogos de produtos, podem usar o IndexedDB para guardar esses dados localmente. Isto reduz a frequência com que a aplicação precisa de ir buscar dados ao servidor e torna a experiência muito mais rápida para o utilizador.

Armazenamento de ficheiros

O IndexedDB pode guardar ficheiros diretamente no navegador. Isto torna-o útil em aplicações onde os utilizadores carregam ou geram conteúdo que precisa de estar acessível entre sessões antes de ser enviado para o servidor.

A maioria dos websites usa o IndexedDB?

Não. O IndexedDB é usado por aplicações web complexas, não por websites de empresas típicos. Um site de marketing, um website de serviços, uma loja online e a maioria dos sites de conteúdo não precisam dele. As suas necessidades de armazenamento ficam bem cobertas por cookies, armazenamento local e armazenamento de sessão.

Para o teu próprio website, a plataforma em que crias trata de todas as decisões de armazenamento. O criador de websites da WEMASY usa automaticamente o tipo de armazenamento certo para cada funcionalidade. Para veres lado a lado todos os tipos de armazenamento do navegador e como se encaixam, lê tipos de armazenamento do navegador.

Perguntas frequentes

O IndexedDB é uma base de dados a sério?

É uma base de dados no sentido em que guarda dados estruturados, suporta indexação e permite consultas. Mas é muito diferente de uma base de dados do lado do servidor. Corre inteiramente no navegador, no dispositivo do visitante, e não num servidor remoto. Foi feito para armazenamento do lado do cliente, não para o tipo de gestão de dados partilhados e com vários utilizadores que as bases de dados de servidor tratam. Com o criador de websites da WEMASY, podes configurar isto diretamente no teu website.

Quantos dados pode guardar o IndexedDB?

Muito mais do que o armazenamento local ou de sessão. A maioria dos navegadores deixa o IndexedDB usar uma parte significativa do espaço livre em disco, muitas vezes centenas de megabytes ou mais. O navegador pode pedir permissão ao utilizador se um website tentar guardar uma quantidade muito grande. O limite exato varia consoante o navegador e também pode depender do espaço livre no dispositivo.

Os dados do IndexedDB mantêm-se depois de fechar o navegador?

Sim. Os dados do IndexedDB são persistentes por defeito, tal como o armazenamento local. Ficam no navegador até o utilizador limpar os dados do navegador ou até o website os remover. Esta persistência é o que torna o IndexedDB adequado para aplicações com capacidade offline, onde os dados precisam de sobreviver entre sessões.

O IndexedDB é seguro?

O IndexedDB é isolado por website, por isso um website não consegue aceder aos dados de outro. Mas, tal como os outros tipos de armazenamento do navegador, é acessível a scripts que correm na página. Dados sensíveis, como palavras-passe, dados de pagamento e informação pessoal, nunca devem ser guardados no IndexedDB. É adequado para dados de aplicações e conteúdo grande, mas não deve ser usado como substituto de um armazenamento seguro do lado do servidor.

Os visitantes podem limpar os dados do IndexedDB?

Sim. Limpar os dados do navegador nas definições remove o IndexedDB juntamente com cookies, armazenamento local e cache. Os visitantes também o podem limpar através das ferramentas de programador. As aplicações que dependem do IndexedDB para dados importantes devem ter isto em conta, sincronizando os dados com um servidor quando houver ligação, para que os dados locais nunca sejam a única cópia.

Preciso de saber do IndexedDB para criar um website?

Não. O IndexedDB é uma ferramenta para programadores que criam aplicações web complexas. Como dono de um website numa plataforma, nunca vais interagir com ele diretamente. O teu criador de websites trata das decisões de armazenamento do navegador em segundo plano. Perceber o IndexedDB é útil para teres uma imagem completa de como os navegadores funcionam, mas não tem influência prática na forma como geres o teu website no dia a dia.

Põe isto em prática
no teu próprio site.

Começa grátis com a WEMASY e cria o teu site em poucos minutos.