Como localStorage
(atualmente) suporta apenas cadeias de caracteres como valores e, para fazer isso, os objetos precisam ser codificados (armazenados como cadeia de caracteres JSON) antes de poderem ser armazenados, existe uma limitação definida em relação ao comprimento dos valores.
Alguém sabe se existe uma definição que se aplica a todos os navegadores?
javascript
html
local-storage
Codekie
fonte
fonte
Respostas:
Citando o artigo da Wikipedia sobre Armazenamento na Web :
E também citando um artigo de John Resig [publicado em janeiro de 2007]:
fonte
domain
(origin
) pode armazenar 5 MB em qualquer cliente individual. Os dados são armazenados na máquina do cliente - de maneira alguma olocalStorage
mecanismo interage entre os clientes.http://example.com
ehttps://example.com
não são da mesma origem (esquemas diferentes).http://example.com
ehttp://www.example.com
não são da mesma origem (hosts diferentes).http://example.com
ehttp://example.com:8080
não são da mesma origem (portas diferentes). HTH. :-)Na verdade, o Opera não tem limite de 5 MB. Oferece aumentar o limite, pois os aplicativos exigem mais. O usuário pode até escolher "Armazenamento ilimitado" para um domínio.
Você pode testar facilmente os limites / cotas de armazenamento local .
fonte
UCS-2
. Embora seja semelhante aUFT16
algumas diferenças muito importantes ... principalmente em torno do fato de que o UCS-2 é anterior à UFT.Aqui está um script simples para descobrir o limite:
Aqui está a essência , JSFiddle e postagem no blog .
O script testará a configuração de cadeias de texto cada vez maiores, até que o navegador gere uma exceção. Nesse ponto, ele limpará os dados de teste e definirá uma chave de tamanho no localStorage, armazenando o tamanho em kilobytes.
fonte
Encontre o comprimento máximo de uma única sequência que pode ser armazenada em
localStorage
Esse trecho encontrará o comprimento máximo de uma String que pode ser armazenada
localStorage
por domínio.Observe que o comprimento de uma string é limitado em JavaScript; se você deseja visualizar a quantidade máxima de dados que podem ser armazenados
localStorage
quando não estiverem limitados a uma única sequência, use o código nesta resposta .Edit: Snippets de pilha não suportam
localStorage
, então aqui está um link para o JSFiddle .Resultados
Chrome (45.0.2454.101): 5242878 caracteres
Firefox (40.0.1): 5242883 caracteres
Internet Explorer (11.0.9600.18036) :
16386122066122070 caracteresEu obtenho resultados diferentes em cada execução no Internet Explorer.
fonte
Navegadores para celular:
Navegadores de desktop:
Link de referência
fonte
Não assuma que 5 MB estão disponíveis - a capacidade de armazenamento local varia de acordo com o navegador, sendo 2,5 MB, 5 MB e ilimitados os valores mais comuns. Fonte: http://dev-test.nemikor.com/web-storage/support-test/
fonte
Você não deseja restringir objetos grandes em uma única entrada localStorage. Isso seria muito ineficiente - a coisa toda teria que ser analisada e recodificada toda vez que alguns pequenos detalhes mudarem. Além disso, o JSON não pode lidar com várias referências cruzadas em uma estrutura de objeto e apaga muitos detalhes, por exemplo, o construtor, propriedades não numéricas de matrizes, o que há em uma entrada esparsa etc.
Em vez disso, você pode usar o Rhaboo . Ele armazena objetos grandes usando muitas entradas localStorage, para que você possa fazer pequenas alterações rapidamente. Os objetos restaurados são cópias muito mais precisas dos salvos e a API é incrivelmente simples. Por exemplo:
BTW, eu escrevi.
fonte
Estou fazendo o seguinte:
fonte
Gosto muito da resposta do cdmckay , mas não parece bom verificar o tamanho em tempo real: é muito lento (2 segundos para mim). Esta é a versão aprimorada, que é muito mais rápida e exata, também com uma opção para escolher qual o tamanho do erro (padrão
250,000
, o erro menor é - quanto maior o cálculo):Testar:
Isso funciona muito mais rápido para o erro padrão; também pode ser muito mais exato quando necessário.
fonte
Eu condensou um teste binário nesta função que eu uso:
Ele também faz o backup do conteúdo antes do teste e os restaura.
Como funciona: Dobra o tamanho até o limite ser atingido ou o teste falhar. Em seguida, ele armazena metade da distância entre baixa e alta e subtrai / adiciona metade da metade de cada vez (subtrai na falha e adiciona no sucesso); aprimorando o valor adequado.
upperLimit
é de 1 GB por padrão e apenas limita a velocidade de digitalização exponencial antes de iniciar a pesquisa binária. Duvido que isso precise ser alterado, mas estou sempre pensando no futuro. ;)No Chrome:
IE11, Edge e FireFox também relatam o mesmo tamanho máximo (10485762 bytes).
fonte
localStorage.Clear()
antes e depois de seu testeVocê pode usar o seguinte código em navegadores modernos para verificar com eficiência a cota de armazenamento (total e usada) em tempo real:
fonte
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
Isso está errado: o tamanho total possível é realmente 10485762.Uma vez eu desenvolvi a extensão do Chrome (navegador de desktop) e testei o tamanho máximo real do armazenamento local por esse motivo.
Meus resultados:
Mais do que o
10240 KB
uso me retornou o erro:fonte
Eu escrevi esse código simples que está testando o tamanho do localStorage em bytes.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Páginas do Github:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
Eu tenho os mesmos resultados em cromo para desktop, ópera, firefox, cromo corajoso e móvel que é ~ 5Mbytes
E metade do resultado menor no safari ~ 2Mbytes
fonte