armazenamento e desempenho da sessão
-
28-10-2019 - |
Pergunta
Tenho um objeto que contém dados relativos à IU do usuário.No momento, os dados vêm na forma de json, eu executo JSON.parse para avaliar o objeto e gerar algum HTML de acordo.
Estou pensando em armazenar a string json no armazenamento da sessão local (não no armazenamento local) e chamá-la sempre que a IU precisar ser atualizada com um novo HTML.Dessa forma, se o usuário abrir outra página no mesmo navegador, todo o HTML de todas as páginas será o mesmo.
Por enquanto, o objeto é armazenado na memória e as interações entre as ações do usuário na IU e as modificações do objeto são rápidas.Se eu serializar e armazenar no armazenamento da sessão, os navegadores irão armazenar os dados na RAM ou no disco rígido e tornar a página mais lenta?
Solução
Retirado da especificação html5:
O tempo de vida de um contexto de navegação pode não estar relacionado ao tempo de vida do próprio processo do agente do usuário, pois o agente do usuário pode suportar a retomada de sessões após uma reinicialização.
O que significa que os navegadores podem armazenar essas informações em disco.
O desempenho dependerá das implementações específicas do navegador e do sistema operacional.No entanto, é muito improvável que buscar essas informações seja um gargalo.
Outras dicas
Fiz este pequeno teste FF 32, Chrome 37, IE 11. Apenas por diversão.
console.clear();
var s = new Date();
for(var i=0; i < 100000; i++)
{
sessionStorage.item = i.toString();
}
var e = new Date();
console.log("session: " + (e - s) + " ms");
s = new Date();
var mem;
for(var i=0; i < 100000; i++)
{
mem = i.toString();
}
e = new Date();
console.log("mem: " + (e - s) + " ms");
s = new Date();
for(var i=0; i < 100000; i++)
{
localStorage.item = i.toString();
}
e = new Date();
console.log("local: " + (e - s) + " ms");
console.log('Done');
FF
- sessão: 830 ms
- mem: 92 ms
- local: 1156 ms
Chrome
- sessão: 2852 ms
- mem: 147 ms
- local: 2.893 ms
IE
- sessão: 977 ms
- mem: 81 ms
- local: 15062 ms
Depois de terminar o teste, a janela do navegador congelou por alguns segundos e a atividade da CPU + Disco aumentou (causada por localStorage).