Jump to content
carloselsb

Quando excede o limite do localStorage. Existe uma outra alternativa?

Recommended Posts

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?

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Elisame Araújo
      Seguinte, estou criando uma página dinâmica para um site de clã de jogos e essa página vai listar todos os membros. Até aí, tudo bem, eu consegui buscar dentro do banco de dados os nomes dos membros, mas, quando preciso com que uma div que abre um lightbox com resumo do perfil do membro, acaba retornando apenas o resultado referente a primeira ID, no caso a 1. O que rola é todos os membros, ficam com a mesma informação de resumo curto e UF, por exemplo, mesmo que no banco de dados isso seja individual. Para explicar melhor:
       
      Este código, busca os membros e algumas colunas no banco de dados.
      $conecta = mysqli_connect($servidor,$usuario,$senha,$banco); if(mysqli_connect_errno()) { die("Falha ao se conectar com: " . mysqli_connect_errno()); } //Consulta Membros $membros = "SELECT m.id, m.nick, m.estado, m.idstatus, m.resumocurto, m.resumolongo, m.data_cadastro, m.canalyt, assalto, medico, suporte, atirador, pilotoaviao, tanque, pilotoheli "; $membros .= " FROM membros as m "; $membros .= " JOIN afinclasse as af "; $membros .= " on m.id = af.id "; $membros .= " where af.id and m.id "; $resultados = mysqli_query($conecta,$membros); if(!$resultados) { die("Falha na consulta de dados. A coluna da tabela selecionada não existe ou seu nome está incorreto."); } ?> Que em seguida são exibidos dentro de:
      <h3 style="margin-top: 25px;"><strong>Membros Ativos</strong></h3> <div class="agileinfo-team-grids"> <?php while($membros = mysqli_fetch_assoc($resultados)) { ?> <!--- INÍCIO----> <div class="col-md-3 wthree-team-grid usuario-foto"> <img src="images/profile-pic/pic-temp.png" alt="" /> <h4><a href="perfil.php?usuario=<?php echo $membros['nick'] ?>"><?php echo $membros['nick'] ?></a> #<?php echo $membros['id'] ?><br> <span class="badge-membro">Membro</span> </h4> <div class="badge alinhamento-mais"><a href="#" data-toggle="modal" data-target="#adbr_killer">Resumo</a></div> </div> <div class="modal about-modal fade" id="adbr_killer" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title">Resumo Rápido</h4> </div> <div class="modal-body"> <div class="agileits-w3layouts-info"> <p><strong>Apresentação Curta:</strong> <?php echo $membros["resumocurto"] ?></p> <p><strong>Estado:</strong> <?php echo $membros['estado'] ?></p> <p><strong>Classe Preferida:</strong> Médico <img src="images/classes/medic.png" width="26" class="alinhamento-estado"></p> <p><strong>Jogos:</strong> <div class="Qtip"> <img src="images/jogos/bf2.png" width="26" class="alinhamento-estado"> <span class="Qtiptext">Battlefield 2</span> </div> <div class="Qtip"> <img src="images/jogos/bf3.png" width="26" class="alinhamento-estado"> <span class="Qtiptext">Battlefield 3</span> </div> <div class="Qtip"> <img src="images/jogos/bf4.png" width="26" class="alinhamento-estado"> <span class="Qtiptext">Battlefield 4</span> </div> <div class="Qtip"> <img src="images/jogos/bf1.png" width="26" class="alinhamento-estado"> <span class="Qtiptext">Battlefield 1</span> </div> <div class="Qtip"> <img src="images/jogos/bfv.png" width="26" class="alinhamento-estado"> <span class="Qtiptext">Battlefield V</span> </div> </p> <p><strong>Patente na Platoon:</strong> Cabo</p> </div> </div> </div> </div> </div> <!--- FIM ----> </div> Porém, quando dentro deste código em específico (abaixo), no caso, que abre um lightbox, ele repete os dados da ID 1 do BD, não seguindo, pra ID 2, ID 3, etc.
      No caso são as variáveis "resumocurto" e "estado" que se repetem igualmente para todos.
      <div class="modal about-modal fade" id="adbr_killer" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title">Resumo Rápido</h4> </div> <div class="modal-body"> <div class="agileits-w3layouts-info"> <p><strong>Apresentação Curta:</strong> <?php echo $membros["resumocurto"] ?></p> <p><strong>Estado:</strong> <?php echo $membros['estado'] ?></p> <p><strong>Classe Preferida:</strong> Médico <img src="images/classes/medic.png" width="26" class="alinhamento-estado"></p> <p><strong>Jogos:</strong> "Lista de Jogos"</p> <p><strong>Patente na Platoon:</strong> Cabo</p> O mais engraçado é, quando eu faço essa busca dentro de uma lista <ul> ou <ol>, ele retorna os dados normalmente para cada perfil.
      <ul> <li>Nick: <?php echo $membros["nick"] ?> <strong>#<?php echo $membros["id"] ?></strong></li> <li>Ativo: <?php echo $membros["idstatus"] ?></li> <li>Estado: <?php echo $membros["estado"] ?></li> <li>Resumo Curto: <?php echo $membros["resumocurto"] ?></li> <li>Resumo Longo: <?php echo $membros["resumolongo"] ?></li> <li>Assalto: <?php echo $membros["assalto"] ?></li> <li>Médico: <?php echo $membros["medico"] ?></li> <li>Suporte: <?php echo $membros["suporte"] ?></li> <li>Atirador: <?php echo $membros["atirador"] ?></li> <li>Piloto de Avião: <?php echo $membros["pilotoaviao"] ?></li> <li>Tanque: <?php echo $membros["tanque"] ?></li> <li>Piloto de Heli: <?php echo $membros["pilotoheli"] ?></li> <li>Canal Youtube: <a href="<?php echo $membros['canalyt'] ?>" target="_blank">Link</a></li> <li>Adicionado Em: <?php echo date('d-m-Y / H:i:s', strtotime($membros['data_cadastro'])) ?></li> </ul> Existe alguma limitação no PHP para ele exibir dados numa DIV que abre a partir de um lightbox? Porque ele só retorna esses dados normalmente através de uma lista? O que eu preciso modificar no código em si para fazer com que ele apareça normalmente?
       
      Não sei se ficou claro...
    • By alh
      Olá Pessoal,
       
      Tenho um script em javascript do mercado livre, que é um botão que vem no formato de script, o código que vou postar abaixo é o script, que ao ser inserido dentro do site vira um botão de "Comprar".

      Preciso fazer com que este botão se inicie automáticamente sem ser clicado pode ser em PHP ou Javascript o comando!!
       
      <script    src="https://www.mercadopago.com.br/integrations/v1/web-payment-checkout.js"    data-preference-id="<?php echo $preference2->id; ?>" data-elements-color="#0D55E7"  data-button-label-color="#0D55E7"    data-button-label="CONTINUAR" >   </script>  
    • By daviassumpcao
      Pessoal... estou iniciando estudos em JS e me deparei com um desafio: Preciso tratar um valor (string) para obter apenas número...  a primeira variável retorna NAN, as outras retornam corretamente. O que posso estar fazendo errado na variável "a" ... preciso que seja retornado "299,00" ... agradeço antecipadamente. 
       
      Segue código: 
       
      <p id="demo"></p> <script> var a = parseInt("R$ 299,00") + "<br>"; var b = parseInt("40 years") + "<br>"; var c = parseInt("10.00") + "<br>"; var n = a + b + c; document.getElementById("demo").innerHTML = n; </script>  
    • By violin101
      Caros amigos, saudações...
       
      Tenho uma rotina para mostrar ao usuário todos os produtos Relacionados com um determinado Produto.
       
      Exemplo:
      Caderno ---> relacionado com: lápis, borracha, caneta, apontador e etc.
       
      O problema que estou enfrentando é o seguinte:
      ==> o produto caderno se estiver relacionado com mais de 4 produtos não ocorre o erro.
       
      Quando mostro o relacionamento se o produto estiver relacionado com apenas 3 ou menos produto, o CAROUSEL fica repetindo o 1º ou 2º item.
       
      Como faço para isso não acontecer ?
       
      Abaixo posto como está o JavaScript.
      $(".produto_relaciona").owlCarousel({ loop: true, nav: true, items: 4, dots: false, navText: ["<i class='fa fa-angle-left'></i>", "<i class='fa fa-angle-right'></i>"], smartSpeed: 1200, autoplayTimeout: 5000, autoHeight: false, autoplay: true, responsive: { 0: { items: 1 }, 480: { items: 2 }, 768: { items: 3 }, 992: { items: 4 } } });  
       
      Grato,
       
      Cesar
    • By fideles
      Mais uma vez venho aqui pedir ajuda a vocês.
       
      Tenho um formulario que criei aqui na empresa algo bem simples, somente para sair das planilhas de excel, que seria cadastro de funcionarios.
       
      Tem os campos, matricula, nome completo, unidade de trabalho, endereço e telefone de emergencia.
       
      A parte do formulario funciona, a gravação no BD tbm, listar as informações também, ai me perguntaram se era possível um auto preenchimento dos campos colocando somente a matricula do funcionario e respondi que eu não sei porque realmente não sei.
       
      A ajuda que eu preciso de vocês seria, é possível fazer isso ? Colocar a matricula e vir do banco e preencher os outros inputs? Se sim, é possível me derem um exemplo de como funciona e eu estudar o codigo e colocar nos outros inputs.
       
      Obrigado antecipadamente. 
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.