Quando excede o limite do localStorage. Existe uma outra alternativa?
Estou com um projeto em que após o login, carrego todos os dados primordiais do usuário em um localStorage. Uma vez logado, esse objeto JSON armazenado como string criptografada pode ser acessado offline, inclusive. Porque trata-se de um projeto web embarcado em um webview Java Android. Pois bem. Estou com um cliente que excedeu esse limite por ter mais de 30K linhas de informação especifica que é transformada em string e posteriormente criptografada. Lógico que isso excedeu o limite do localStorage.
localStorage.setItem('corexmr', GARRA.Const.Criptografia.set(JSON.stringify(GARRA)));
Minha primeira dúvida foi saber se o limite era empregado a unidade do localStorage usado ou se esse limite é do uso do LS no projeto. Tirei essa duvida porque criei uma função de empilhamento de LS, monitorando o limite distribuido em cada. Então, se seu fizesse um armazenamento, eu poderia realizar um stringfy, criptografar, mensurar o tamanho e dividir pelo limite em storages como 'core', 'core1', 'core2', ...
GARRA: {
Methods: {
localStorage: {
limitcharacter: 5000000,
set: function(nome, obj) {
var objString = GARRA.Const.Criptografia.set(JSON.stringify(obj));
if (GARRA.Methods.localStorage.limitcharacter > objString.length) {
localStorage.setItem(nome, objString);
} else {
var calc = (objString.length / GARRA.Methods.localStorage.limitcharacter), i = 0, start = 0;
while (i <= calc) {
localStorage.setItem((i === 0) ? nome : nome + i.toString(), objString.substr(start, GARRA.Methods.localStorage.limitcharacter));
start = (start + GARRA.Methods.localStorage.limitcharacter);
i++;
}
}
},
load: function(nome) {
var end = false, i = 0, content = '';
while (!end) {
if (localStorage.getItem((i === 0) ? nome : nome + i.toString()) == null) {
end = true;
} else {
content += localStorage.getItem((i === 0) ? nome : nome + i.toString());
}
i++;
}
return JSON.parse(GARRA.Const.Criptografia.load(content));
}
}
}
}
Mas mesmo assim cheguei ao limite.
Pergunta:
- Existe uma solução alternativa, para quem quer continuar a armazenar localmente no cliente sob regime de persistência?Discussão (0)
Carregando comentários...