Esta tradução está incompleta. Ajude atraduzir este artigo.
A API de Web Storage fornece mecanismos para que os navegadores possam armazenar dados através de chave/valor de uma forma mais eficiente que os cookies.
Web Storage Conceitos e formas de uso
A API de Web Storage fornece duas maneiras de armazenar dados:
sessionStorage
mantém as informações armazenadas por origem e permanece disponível enquanto há uma sessão aberta no navegador(mesmo a página sendo recarregada). Caso o browser seja fechado a sessão será limpa e as informações serão perdidas.localStorage
mesmo que o navegador seja fechado, os dados permanecem armazenados.
Esses mecanismos estão disponíveis a partir das seguintes propriedades Window.sessionStorage
e Window.localStorage
(para um maior suporte, o objeto Window
implementa os objetos Window.LocalStorage
e Window.SessionStorage
) — ao invocar uma dessas propriedades, é criada uma instância do objeto Storage
, que fornece métodos para inserir, recuperar e remover os dados. Sempre será utilizado um objeto dirente para cada origem de sessionStorage
e localStorage, dessa forma o controle de ambos é realizado de forma separada.
Nota: O acesso a API de Web storage a partir de IFrames de terceiros é negado se o usuário desabilitou cookies de terceiros (Firefox implementa esse comportamento a partir da versão 43 em diante).
Nota: Web Storage não é o mesmo que mozStorage (interface XPCOM da Mozilla para o SQLite) ou Session store API (uma forma de armazenamento XPCOM para uso de extensões).
Web Storage interfaces
Storage
- Permite que você insira, recupere e remova dados de um domínio no storage(session ou local).
Window
- A API de Web Storage estende o objeto
Window
com duas novas propriedades —Window.sessionStorage
eWindow.localStorage
— fornecendo acesso à sessão do domínio atual e local para o objetoStorage
respectivamente. StorageEvent
-
Um evento de storage é chamado em um objeto window do documento quando ocorre uma mudança no storage.
Exemplos
Para desmonstrar o uso de web storage, nós criamos um exemplo simples, chamado Web Storage Demo. A página da demo landing page oferece funcionalidades que permitem alterar a cor, fonte e imagem que é exibida na página. Quando você escolhe uma opção diferente, a página será atualizada imediatamente. Além disso, sua escolha foi armazenada em localStorage
, para que quando você feche o navegador e abra novamente para acessar a página, suas escolhas sejam lembradas.
Nós também fornecemos um event output page — para quando você abrir a página em outra aba, as informações sejam atualizadas através da chamada de um StorageEvent
.
Especificações
Especificação | Status | Comentário |
---|---|---|
Web Storage (Second edition) | Recommendation |
Compatibilidade com os Navegadores
Propriedade | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
localStorage | 4 | 3.5 | 8 | 10.50 | 4 |
sessionStorage | 5 | 2 | 8 | 10.50 | 4 |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Suporte básico | 2.1 | ? | 8 | 11 | iOS 3.2 |
Todos os navegadores têm espaços de armazenamento diferentes tanto para localStorage quanto para sessionStorage. Veja um resumo detalhado da capacidade de armazenamento de vários navegadores.
Nota: Desde iOS 5.1, o Safari armazena dados móveis de LocalStorage na pasta cache, que está sujeito a limpeza pelo OS, além disso o espaço de armazenamento é curto.
Navegação privada /modo de navegação anônima
Boa parte dos navegadores atuais suportam a opção de privacidade chamada modo de "Navegação privada ou anônima", que basicamente torna a sessão de navegação privada e não deixa rastros depois que o navegador é fechado. Este modo é incompatível com armazenamento na Web por razões óbvias. Os fabricantes de navegadores estão experimentando com diferentes cenários como lidar com essa incompatibilidade.
A maioria dos navegadores optaram por uma estratégia onde as APIs de armazenamento ainda estão disponíveis e, aparentemente, funcional, com a grande diferença de que todos os dados armazenados é apagado depois que o navegador é fechado. Para estes navegadores ainda existem diferentes interpretações sobre o que deve ser feito com os dados existentes armazenados (a partir de uma sessão de navegação regular). E quanto a leitura dos dados se o navegador estiver no modo privado? Há alguns navegadores, principalmente Safari, que optaram por uma solução em que o armazenamento está disponível, mas está vazio e tem uma quota de 0 bytes atribuídos, tornando impossível o armazenamento de dados.
Os desenvolvedores devem estar cientes e considerar as diferentes formas de implementações ao desenvolverem sites dependendo das APIs Web Storage. Para mais informações, leia neste post escrito no blog do WHATWG que lida especificamente com este tópico.