Armazenamento de sessão versus armazenamento local: quais são as diferenças?
O armazenamento local e de sessão são armazenamentos de dados do lado do cliente fáceis de usar, que você pode acessar usando JavaScript. Então, como eles diferem?
O armazenamento local e de sessão são métodos de armazenamento do navegador que permitem armazenar dados junto com solicitações HTTP sem estado. Eles são uma alternativa ao armazenamento baseado em cookies e têm muitos usos no desenvolvimento web.
Embora operem de maneira muito semelhante, existem diferenças significativas das quais você deve estar ciente.
Armazenamento local e armazenamento de sessão: quais são seus usos?
O armazenamento local e de sessão são APIs JavaScript que você pode usar para armazenar dados no lado do cliente. Eles permitem que um site armazene dados no navegador e instruam o navegador a acessá-los mais tarde.
Dependendo das suas necessidades, você pode usar armazenamento local ou de sessão para armazenar dados. Ambos os métodos de armazenamento são semelhantes aos cookies, mas sem as mesmas preocupações de privacidade em relação aos cookies. Portanto, a maioria dos sites modernos prefere usar apenas métodos de armazenamento na web ou combiná-los com cookies como alternativa.
Ao contrário dos cookies, o armazenamento local e o armazenamento de sessão não enviam dados ao servidor por meio de cabeçalhos HTTP. Você deve usá-los apenas para funcionalidade do lado do cliente.
Além disso, o armazenamento local e de sessão tem um limite de armazenamento de cerca de 5 MB por domínio. Eles fornecem mais armazenamento do que os cookies, que têm capacidade de apenas 4 KiB por cookie.
O que é armazenamento de sessão?
Uma sessão de navegação aproxima o uso que você faz de um site. Se você visitar um site, navegar um pouco e desligar o computador, poderá pensar nesse momento como uma única sessão. A configuração do seu navegador pode mudar isso de maneira sutil, mas uma sessão tem como objetivo representar o período de tempo que você interage com um site.
O armazenamento da sessão é exclusivo para cada guia do navegador. Se você abrir uma nova guia e navegar até o mesmo site, iniciará uma nova sessão com armazenamento próprio. No entanto, se você usar um recurso de "guia duplicada" em seu navegador, isso poderá reutilizar a mesma sessão. Você não pode confiar muito nos detalhes específicos de uma “sessão”. Em vez disso, concentre-se no conceito central: o armazenamento da sessão é temporário.
O armazenamento de sessão possui métodos de API integrados para trabalhar com dados de pares chave/valor. Você pode armazenar dados de JavaScript assim:
sessionStorage.setItem("key", "value");
E para recuperar o valor armazenado:
sessionStorage.getItem("key");
Observe que tanto key quanto value são apenas tipos de string. Se quiser armazenar um tipo diferente, você precisará convertê-lo em uma string, explícita ou implicitamente.
O que é armazenamento local?
O armazenamento local mantém os dados em todas as instâncias de um site, estejam elas em guias ou janelas diferentes. Também é permanente, portanto os dados não desaparecerão quando você fechar o navegador.
Quando você abre um site que anteriormente usava armazenamento local, ele sempre terá acesso aos dados armazenados.
Como desenvolvedor web, você pode usar esse mecanismo para reter dados sobre um usuário. Alguns sites podem usar isso para mantê-lo conectado ou fornecer uma experiência mais personalizada.
Assim como o armazenamento de sessão, você pode definir um objeto de armazenamento local com uma linha de código JavaScript:
localStorage.setItem("key", "value");
Para acessar o valor da chave:
localStorage.getItem("key");
Observe que esses métodos funcionam da mesma maneira que o armazenamento de sessão, apenas usam um tipo diferente de armazenamento de dados.
Embora o armazenamento da sessão limpe os dados assim que a sessão termina, a única maneira de limpar o armazenamento local é excluí-los explicitamente. Ambos os tipos de armazenamento oferecem dois métodos para limpar dados. O primeiro remove um item específico de dados com base em sua chave:
localStorage.removeItem("key");
Você também pode remover todos os dados armazenados pelo seu site, independentemente da chave:
localStorage.clear();
Você pode aprender mais sobre esses métodos de API de armazenamento na web no site javascript.info.
Quando você precisa de armazenamento local?
Como o armazenamento local é persistente, é melhor reter os dados durante as visitas dos usuários. Se você deseja armazenar preferências do site ou armazenar dados de longo prazo, o armazenamento local é apropriado. Talvez você não queira armazenar dados mais confidenciais usando armazenamento local, pois é permanente.
Como o armazenamento local e de sessão são métodos front-end, você pode evitar usá-los para funções baseadas em servidor, como login de usuário. Você poderia considerar os cookies como uma alternativa nestes casos.
Quando você precisa de armazenamento de sessão?
Se você deseja armazenar dados apenas enquanto um usuário interage com seu site, o armazenamento de sessão é ideal. Isso pode ser para armazenamento em cache de curto prazo ou dados de uso sobre uma visita específica ao seu site.
O armazenamento de sessão é melhor para armazenar informações mais confidenciais, pois expira.
Armazenamento local versus armazenamento de sessão: o que é mais seguro?
Como você viu, os métodos de armazenamento local e de sessão são semelhantes em muitos aspectos, mas ainda possuem casos de uso personalizados. Você não deve considerar nenhum deles seguro, pois são tecnologias front-end às quais o JavaScript tem acesso. No entanto, o armazenamento da sessão é muito conveniente e a sua natureza temporária é tranquilizadora.
O armazenamento local é permanente, por isso pode representar preocupações adicionais de segurança. Qualquer pessoa que abra um navegador pode, em teoria, acessar o armazenamento local. Você deve estar ciente de como funcionam os ataques XSS e como evitá-los.
Armazenamento local ou armazenamento de sessão: qual você deve usar?
O armazenamento de sessões é um pouco mais seguro devido à sua natureza temporária. No entanto, a escolha do método de armazenamento na web depende dos seus requisitos. O armazenamento JavaScript é mais adequado apenas para uso do lado do cliente. Mas oferece um armazenamento de dados conveniente baseado em navegador e é muito fácil de usar.
Lembre-se de que, embora o armazenamento local armazene dados em diversas guias, o armazenamento de sessão é, em sua maior parte, exclusivo para cada guia. Você deve garantir que seu aplicativo faça o mínimo de suposições possível e atenda a casos extremos.
Os cookies são uma forma mais antiga de persistência de dados, mas ainda são muito usados. Você pode querer verificar se há dados que você precisa transmitir ao servidor.