Ponieważ localStorage
(obecnie) obsługuje tylko łańcuchy jako wartości, a aby to zrobić, obiekty muszą zostać poddane strunizacji (przechowywane jako łańcuch JSON) przed ich zapisaniem, czy istnieje określone ograniczenie dotyczące długości wartości.
Czy ktoś wie, czy istnieje definicja, która dotyczy wszystkich przeglądarek?
javascript
html
local-storage
Codekie
źródło
źródło
Odpowiedzi:
Cytując z artykułu z Wikipedii na temat przechowywania w Internecie :
A także cytowanie z artykułu Johna Resiga [opublikowanego w styczniu 2007 r.]:
źródło
domain
(origin
) może przechowywać 5 MB na każdym indywidualnym kliencie. Dane są przechowywane na komputerze klienta - w żaden sposóblocalStorage
mechanizm nie wchodzi w interakcje między klientami.http://example.com
ihttps://example.com
nie są tego samego pochodzenia (różne systemy).http://example.com
ihttp://www.example.com
nie są tego samego pochodzenia (różne hosty).http://example.com
ihttp://example.com:8080
nie są tego samego pochodzenia (różne porty). HTH. :-)W rzeczywistości Opera nie ma limitu 5 MB. Oferuje zwiększenie limitu, ponieważ aplikacje wymagają więcej. Użytkownik może nawet wybrać „Nieograniczone miejsce na dane” dla domeny.
Możesz łatwo przetestować limity / kwoty localStorage.
źródło
UCS-2
. Chociaż jest podobny doUFT16
tego, istnieją pewne bardzo ważne różnice ... głównie dotyczące tego, że UCS-2 wyprzedza UFT.Oto prosty skrypt do ustalenia limitu:
Oto sedno , JSFiddle i post na blogu .
Skrypt będzie testował ustawienie coraz większych ciągów tekstu, dopóki przeglądarka nie zgłosi wyjątku. W tym momencie wyczyści dane testowe i ustawi klucz wielkości w localStorage, przechowując rozmiar w kilobajtach.
źródło
Znajdź maksymalną długość pojedynczego ciągu, w którym można przechowywać
localStorage
Ten fragment znajdzie maksymalną długość ciągu, który można przechowywać w
localStorage
domenie.Zauważ, że długość łańcucha jest ograniczona w JavaScript; jeśli chcesz wyświetlić maksymalną ilość danych, które mogą być przechowywane
localStorage
bez ograniczenia do jednego ciągu, możesz użyć kodu z tej odpowiedzi .Edycja: Fragmenty stosu nie obsługują
localStorage
, więc tutaj jest link do JSFiddle .Wyniki
Chrome (45.0.2454.101): 5242878 znaków
Firefox (40.0.1): 5242883 znaków
Internet Explorer (11.0.9600.18036) :
16386122066122070 znakówOtrzymuję różne wyniki dla każdego uruchomienia w Internet Explorerze.
źródło
Przeglądarki mobilne:
Przeglądarki stacjonarne:
Link referencyjny
źródło
Nie zakładaj, że 5 MB jest dostępne - pojemność pamięci lokalnej zależy od przeglądarki, przy czym 2,5 MB, 5 MB i nieograniczona są najczęstszymi wartościami. Źródło: http://dev-test.nemikor.com/web-storage/support-test/
źródło
Nie chcesz łączyć dużych obiektów w pojedynczy wpis localStorage. Byłoby to bardzo nieefektywne - całość musiałaby zostać przeanalizowana i ponownie zakodowana za każdym razem, gdy wprowadzono drobne zmiany w szczegółach. Ponadto JSON nie jest w stanie obsłużyć wielu odsyłaczy w strukturze obiektu i usuwa wiele szczegółów, np. Konstruktor, nienumeryczne właściwości tablic, co znajduje się we wpisie rzadkim itp.
Zamiast tego możesz użyć Rhaboo . Przechowuje duże obiekty przy użyciu wielu wpisów localStorage, dzięki czemu można szybko wprowadzać małe zmiany. Przywrócone obiekty są znacznie dokładniejszymi kopiami zapisanych, a interfejs API jest niezwykle prosty. Na przykład:
BTW, napisałem to.
źródło
Wykonuję następujące czynności:
źródło
Naprawdę podoba mi się odpowiedź cdmckay , ale sprawdzanie rozmiaru w czasie rzeczywistym nie wygląda dobrze: jest po prostu zbyt wolne (dla mnie 2 sekundy). Jest to ulepszona wersja, która jest znacznie szybsza i dokładniejsza, również z opcją wyboru, jak duży może być błąd (domyślnie
250,000
, im mniejszy błąd - tym dłuższe jest obliczenie):Testować:
Działa to znacznie szybciej w przypadku błędu standardowego; w razie potrzeby może być znacznie dokładniejszy.
źródło
Skondensowałem test binarny do tej funkcji, której używam:
Tworzy kopię zapasową zawartości przed testowaniem, a następnie przywraca ją.
Jak to działa: podwaja rozmiar, dopóki limit nie zostanie osiągnięty lub test się nie powiedzie. Następnie zapisuje połowę odległości między niskim a wysokim i odejmuje / dodaje za każdym razem połowę połowy (odejmuje w przypadku niepowodzenia i dodaje w przypadku sukcesu); szlifowanie do właściwej wartości.
upperLimit
Domyślnie jest to 1 GB i ogranicza jedynie ekspansję wykładniczą w górę przed rozpoczęciem wyszukiwania binarnego. Wątpię, czy trzeba to zmienić, ale zawsze myślę o przyszłości. ;)W Chrome:
IE11, Edge i FireFox również zgłaszają ten sam maksymalny rozmiar (10485762 bajtów).
źródło
localStorage.Clear()
przed i po testachW nowoczesnych przeglądarkach możesz użyć następującego kodu, aby efektywnie sprawdzić limit miejsca (całkowity i zajęty) w czasie rzeczywistym:
źródło
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
To źle: całkowity możliwy rozmiar to w rzeczywistości 10485762.Kiedyś opracowałem rozszerzenie Chrome (przeglądarka na komputer) i przetestowałem z tego powodu maksymalny rozmiar magazynu lokalnego .
Moje wyniki:
Więcej niż
10240 KB
użycie zwróciło mi błąd:źródło
Napisałem ten prosty kod, który testuje rozmiar localStorage w bajtach.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Strony Github:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
Te same wyniki mam na Chrome Desktop, Opera, Firefox, odważny i mobilny Chrome, który wynosi ~ 5 MB
I o połowę mniejszy wynik w safari ~ 2 MB
źródło