Sobes.tech
Junior

Explique a diferença entre cookies, sessionStorage e localStorage.

sobes.tech IA

Resposta da IA

Cookies, sessionStorage e localStorage são mecanismos de armazenamento web que diferem em propósito, duração e volume de dados armazenados.

  • Cookies: Pequenos fragmentos de dados enviados pelo servidor web e armazenados no computador do utilizador pelo navegador web. São enviados com cada pedido subsequente ao mesmo servidor. Utilizados para autenticação, armazenamento de preferências do utilizador, rastreamento do estado do carrinho de compras.

    • Duração: Definida na criação (pode ser de sessão ou com uma data de expiração específica).
    • Volume: Limitado, geralmente alguns quilobytes (cerca de 4 KB).
  • sessionStorage: Armazena dados apenas para uma sessão do navegador (aba ou janela aberta). Os dados são eliminados ao fechar a aba ou janela.

    • Duração: Até fechar a aba ou janela do navegador.
    • Volume: Significativamente maior que as cookies (geralmente vários megabytes).
  • localStorage: Armazena dados sem data de expiração, até serem explicitamente eliminados pelo utilizador ou por um script. Disponível em todas as abas e janelas do mesmo domínio.

    • Duração: Permanente (até ser eliminado explicitamente).
    • Volume: Significativamente maior que as cookies (geralmente vários megabytes).

Aqui uma comparação breve:

Mecanismo Duração Disponibilidade Enviado ao servidor Volume (típico) Propósito
Cookies De sessão ou com expiração Via cabeçalhos HTTP Sim ~4 KB Autenticação, rastreamento, preferências
sessionStorage Até fechar a aba/janela Via API JS Não ~5-10 MB Armazenamento temporário de dados de sessão
localStorage Permanente (até eliminar) Via API JS Não ~5-10 MB Armazenamento de dados a longo prazo

Exemplos de uso com API JavaScript:

// Cookies (acesso via document.cookie, requer análise e serialização manual)
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// sessionStorage
sessionStorage.setItem('id', '123');
let userId = sessionStorage.getItem('id');
sessionStorage.removeItem('id');

// localStorage
localStorage.setItem('theme', 'dark');
let userTheme = localStorage.getItem('theme');
localStorage.removeItem('theme');
localStorage.clear(); // Limpa todos os dados em localStorage