Summary
- O primeiro rascunho do W3C sobre Web Storage, de 23 de abril de 2009, imaginou duas compras de passagens no mesmo site. Um cookie que registra apenas a reserva corrente pode levar a escolha de uma janela para a outra.
sessionStorageacompanha a janela principal e a origem;localStorageoferece à origem um espaço compartilhado entre janelas e disponível depois da sessão, sem anexar os valores automaticamente a cada pedido HTTP.
Comprar uma passagem às seis da manhã já exige alguma coragem. Comprar a passagem errada às seis da manhã exige uma explicação ao cartão de crédito. A pessoa está comparando dois voos da mesma companhia em janelas separadas. Em uma, escolhe bagagem; na outra, confere o horário. Volta à primeira para fechar a compra e descobre que o site passou a se lembrar da segunda. O cookie fez exatamente o que lhe pediram: guardou o voo atual. Só havia dois candidatos ao cargo.
O rascunho inicial de Web Storage publicado pelo W3C em 23 de abril de 2009 conta essa história de modo direto. Se um site usa um cookie para manter o voo em andamento, as duas janelas podem interferir uma na outra. O texto chega à possibilidade de o cliente comprar duas passagens para o mesmo voo sem perceber. É um exemplo de especificação que sabe onde o erro aparece: no recibo.
O cookie acompanha requisições destinadas ao site, o que ajuda o servidor a reconhecer o navegador. Quando a pessoa conduz duas transações paralelas, porém, uma única informação compartilhada sobre “a compra atual” tem um problema de endereço. O navegador sabe a qual janela principal cada página pertence. Web Storage transformou essa divisão em algo que os programas da página podiam usar para guardar dados.
A primeira gaveta recebeu o nome sessionStorage. A Recomendação de 2013 atribui áreas próprias a cada contexto de navegação principal, separadas também por origem. A escolha de assento continua disponível quando a pessoa avança pelas páginas da reserva naquela janela. Uma segunda janela mantém seu próprio conjunto. Se ela nasce de uma janela relacionada, pode começar com uma cópia; daí em diante, as duas cópias seguem caminhos independentes. A opção pelo voo noturno já não toma de assalto o formulário do voo matinal.
A origem acrescenta o outro endereço. Cada site tem suas áreas, e outro site não recebe livre acesso a elas. Para achar os dados da reserva, importam tanto a origem quanto a janela. A diferença parece burocracia até o momento em que o comprador alterna entre duas telas e espera que cada uma conserve suas próprias escolhas.
A segunda gaveta é localStorage. Ela pertence à origem, aparece para suas diferentes janelas e pode durar além de uma sessão de navegação. O rascunho pensava em documentos escritos pelo usuário ou dados de uma caixa de mensagens guardados no cliente. Também oferecia um exemplo miúdo: o número de visitas à página. Um cookie vai junto com cada requisição à qual se aplica; o valor em armazenamento local fica no navegador até o script consultá-lo e a aplicação decidir enviá-lo. Não é preciso carimbar o contador de visitas em toda correspondência com o servidor.
A segunda edição da Recomendação, de 2016, descreve os puxadores dessas gavetas. setItem, getItem, removeItem e clear manipulam chaves e valores. Uma alteração que falha mantém a área como estava. Se o espaço acabar ou o armazenamento estiver bloqueado, setItem pode lançar QuotaExceededError. Outros documentos com acesso à mesma área recebem um evento storage quando ela muda. Os scripts devem enxergar dados coerentes; a norma não obriga cada chamada a esperar a gravação física no disco.
O projeto ainda teve sua briga nos bastidores. A seção de questões da Recomendação de 2013 registra que alguns implementadores consideravam caro demais o bloqueio pensado para evitar disputas entre scripts de janelas diferentes. Uma gaveta compartilhada precisa de ordem quando várias mãos a abrem. A conveniência visível para quem escreve a página produz trabalho invisível para quem constrói o navegador.
A linha do tempo publicada pelo W3C acompanha o rascunho de 2009 e as Recomendações de 2013 e 2016. O caso das passagens permanece útil porque nomeia a pergunta certa. Uma compra em andamento mora na janela. Um rascunho duradouro mora na origem. Um cookie segue para o servidor nas requisições. Quando cada lembrança ganha endereço, as duas viagens podem finalmente ser comparadas sem que uma se fantasie de outra.
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance





