Armazenamento local HTML5 vs. armazenamento de sessão

561

Além de não persistente e com escopo definido apenas para a janela atual, existem benefícios (desempenho, acesso a dados, etc.) ao armazenamento de sessões sobre o armazenamento local?

jpkeisala
fonte
15
@robert - Eu acredito que você está incorreto. No site w3.org/TR/webstorage sessionStorage, o escopo é definido para o "contexto de navegação de nível superior", o que significa que é exclusivo para cada guia / janela do navegador. localStorage tem o escopo definido para a origem, no entanto, o que significa que é compartilhado em todas as páginas na mesma origem.
broofa 26/07/2013

Respostas:

812

localStorage e sessionStorage estendem o Storage . Não há diferença entre eles, exceto a pretendida "não persistência" de sessionStorage.

Ou seja, os dados armazenados em localStorage persistem até serem excluídos explicitamente . As alterações feitas são salvas e disponíveis para todas as visitas atuais e futuras ao site.

Pois sessionStorage, as alterações estão disponíveis apenas por guia. As alterações feitas são salvas e disponíveis para a página atual nessa guia até que ela seja fechada. Uma vez fechado, os dados armazenados são excluídos.

tcooc
fonte
17
há uma discussão mais ampla que você pode achar útil aqui: stackoverflow.com/questions/19867599/…
Ed Sykes
13
se você salvar alguns dados no armazenamento sob http, você não será capaz de recuperá-lo em https
Mark Thien
Eu testei isso no Chrome v41.x e parece que a declaração acima sobre https não é verdadeira: localStorage retém seus dados armazenados.
CCC
36
O SessionStorage sobrevive através de recarregamentos e restaurações de páginas, mas a abertura de uma nova guia / janela iniciará uma nova sessão.
Patrick
160

A única diferença é que o localStorage tem um tempo de expiração diferente, sessionStoragesó estará acessível enquanto e pela janela que o criou estiver aberta.
localStoragedura até você excluí-lo ou o usuário excluí-lo.
Digamos que você queira salvar um nome de usuário e senha de login que deseja usar sessionStoragepor localStoragerazões de segurança (ou seja, outra pessoa acessando sua conta posteriormente).
Mas se você quiser salvar as configurações de um usuário em sua máquina, provavelmente desejará localStorage. Contudo:

localStorage- use para uso a longo prazo.
sessionStorage- use quando precisar armazenar algo que mude ou algo temporário

MayorMonty
fonte
103

Alguns outros pontos que podem ser úteis para entender as diferenças entre o armazenamento local e a sessão

  1. O armazenamento local e o armazenamento de sessão têm como escopo a origem do documento, portanto

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    Todos os URLs acima não compartilharão o mesmo armazenamento. (O caminho da página da Web não afeta o armazenamento na Web)

  2. O armazenamento da sessão é diferente, mesmo para o documento com a mesma política de origem aberta em guias diferentes, portanto, a mesma página da Web aberta em duas guias diferentes não pode compartilhar o mesmo armazenamento de sessão.

  3. O armazenamento local e a sessão também têm escopo definido pelos fornecedores de navegadores . Portanto, os dados de armazenamento salvos pelo IE não podem ser lidos pelo Chrome ou FF.

Espero que isto ajude.

functionoid
fonte
3
Não, o mesmo compartilhamento sessionStorage entre http e https, mas localStorage não.
Shahdat 26/08/16
5
Se você definir sessionStorage na origem https primeiro, ele estará disponível em http mas se você criar sessionStore em http então não estará disponível em http
Shahdat
4
@ Shahdat, você quis dizer "então não estará disponível em https" (observe os)?
Daniel Werner
3
@DanielWerner sim, se você criar sessionStore em http, não estará disponível em https.
Shahdat 23/05
28

A principal diferença entre localStoragee sessionStorageé a sessionStorageúnica por guia. Se você fechar a guia, a sessionStorageexclusão será excluída localStorage. Além disso, você não pode se comunicar entre as guias :)

Outra diferença sutil é que, por exemplo, no Safari (8.0.3) localStorage, o limite é de 2551 k caracteres, mas sessionStoragepossui armazenamento ilimitado.

No Chrome (v43), ambos localStoragee sessionStorageestão limitados a 5101 k caracteres (nenhuma diferença entre o modo normal / de navegação anônima)

No Firefox, ambos localStoragee sessionStorageestão limitados a 5120 k caracteres (não há diferença entre o modo normal / privado)

Nenhuma diferença de velocidade, seja qual for :)

Há também um problema com o Mobile Safari e o Mobile Chrome, o modo privado Safari e o Chrome têm um espaço máximo de 0 KB

Eek
fonte
1
limitado a 5101 k caracteres? então .. 5,101 milhões de caracteres?
ZZE
@Zze Sim, 1 caractere geralmente tem 1 byte, portanto, 5 milhões de caracteres equivalem a 5Mb de armazenamento.
Basim Khajwal -
@BasimKhajwal Isso é 5MB. Bytes, não bits.
Yeti
Você pode adicionar uma fonte ao que você mencionou?
Mukus 19/09/19
@Mukus, não há fonte, eu mesmo executei testes e tive um problema com o Safari de modo privado por ter localStorage, mas por não ter espaço lá e meu polyfill não disparar desde que localStorage existia, mas o script falhou porque não pôde armazenar qualquer coisa lá. Você também pode testar usando esta ferramenta - dev-test.nemikor.com/web-storage/support-test
Eek
17

sessionStorageé o mesmo que localStorage, exceto que ele armazena os dados para apenas uma sessão e será removido quando o usuário fechar a janela do navegador que os criou.

Ahmad Santarissy
fonte
10

Em termos de desempenho, minhas medições (brutas) não encontraram diferença em 1000 gravações e leituras

Em termos de segurança, intuitivamente, parece que o localStore pode ser desligado antes da sessionStore, mas não há evidências concretas - talvez alguém o faça?

funcional, concorde com o digitalFresh acima

cc jovem
fonte
1
sobre o desempenho do carregamento da página: sessionStorage e localStorage são iniciados e preenchidos fora do ciclo de carregamento da página. Portanto, o pedágio no tempo de carregamento da página inicial não é mensurável no navegador.
Mirko
6

O armazenamento da sessão Ya e o armazenamento local têm o mesmo comportamento, exceto um armazenamento local que armazena os dados até e, a menos que o usuário exclua o cache e os cookies e os dados do armazenamento da sessão reterão no sistema até fecharmos a sessão i, e até fecharmos a janela de armazenamento da sessão criada.

Bhargavi
fonte
5

A vantagem do armazenamento da sessão sobre o armazenamento local, na minha opinião, é que ele tem capacidade ilimitada no Firefox e não persiste por mais tempo que a sessão. (É claro que depende de qual é seu objetivo.)

avvett
fonte
2

Armazenamento local: mantém os dados de informações do usuário armazenados sem data de vencimento. Esses dados não serão excluídos quando o usuário fechar as janelas do navegador, estarão disponíveis por dia, semana, mês e ano.

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

Armazenamento de sessão: É o mesmo que a data de armazenamento local, exceto que excluirá todas as janelas quando as janelas do navegador forem fechadas por um usuário da web.

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

Leia mais Clique

Srikrushna
fonte
2
  • sessionStorage mantém uma área de armazenamento separada para cada origem, disponível durante a sessão da página (desde que o navegador esteja aberto, incluindo recarregamentos e restaurações de páginas)

  • localStorage faz a mesma coisa, mas persiste mesmo quando o navegador é fechado e reaberto.

Peguei isso em https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

Linda Gutiérrez Montoya
fonte