BT

Armazenamento Offline com o LocalForage

por João Paulo Marques , traduzido por Diogo Carleto em 03 Abr 2014 |

A fundação Mozilla lançou o localForage, uma nova biblioteca JavaScript que promete simplificar o processo de armazenamento de dados offline em aplicações web.

Embora não seja uma tecnologia recente nos navegadores, o suporte offline sempre foi muito fragmentado devido à várias opções disponíveis. O que torna esta biblioteca única é o fato que ela tenta combinar o melhor dos mundos: as funcionalidades de algumas das mais recentes tecnologias (assincronismo e suporte ao blob) com uma simples API. Isto oferece uma poderosa capacidade para aplicações web offline, tornando-os mais próximo de seus colegas móveis nativos e mais intuitivos para os desenvolvedores trabalharem.

Uma das primeiras alternativas disponíveis foi olocalStorage que provê acesso simples a dados para armazenamento offline. Entretanto testes de benchmark mostraram que ele é lento, síncrono e não pode manipular blobs binários (por exemplo, cachê de arquivos mp3 não é possível). Desde então, duas outras opções populares surgiram - IndexedDB e Web SQL - que são assíncronos, velozes e suportam grandes conjuntos de dados. A desvantagem destas duas tecnologias é o fato de suas APIs não serem muito simples de usar e também não serem suportados pela maioria dos navegadores.

O recente lançamento do localForage tenta resolver esses problemas unificando tecnologias - assincronismo e suporte a blob a partir do IndexedDB e Web SQL com a sintaxe simples do localStorage:

var settings = {color: 'black', font: 'Helvetica'};
localForage.setItem('settings', settings, function(result) {  
console.log(result);
});

A inclusão do suporte ao IndexedDB e Web SQL permite armazenar mais dados para aplicações web que o localStorage sozinho poderia armazenar. A natureza sem bloqueios da API torna as aplicações web mais rápidas pelo fato de não ter que manipular a thread principal e suas chamadas get/set. Adicionalmente, o localForage suporta callbacks e ES6 Promises deixando a escolha da melhor implementação para o desenvolvedor.

A biblioteca carrega e gerencia automaticamente os drivers para o IndexedDB, Web SQL e localStorage, assim não é necessário gerenciar isto manualmente (o melhor driver é escolhido independente do navegador em que a aplicação está sendo executada). Quando nem o IndexedDB nem o Web SQL estão disponíveis, localForage volta para o localStorage, assim pelo menos os dados básicos podem ser armazenados offline (embora sem suporte a blob e muito mais lento).

Todos navegadores modernos são suportados pelo localForage. O armazenamento assíncrono está disponível em todos navegadores, com a versão que suporta o localStorage em parenteses:

  • Navegador Android 2.1
  • BlackBerry 7
  • Chrome 23 (Chrome 4.0 com localStorage)
  • Chrome para o Android 32
  • Firefox 10 (Firefox 3.5 com localStorage)
  • Firefox para Android 25
  • IE 10 (IE 8 com localStorage)
  • IE Mobile 10
  • Opera 15 (Opera 10.5 com localStorage)
  • Opera Mobile 11
  • PhoneGap/Apache Cordova 1.2.0
  • Safari 3.1

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.