JSON Toolkit

Jak duży plik JSON potrafi obsłużyć przeglądarka

Podsumowanie: Nie ma stałego limitu; ograniczeniem jest budżet pamięci twojej karty. Plik 20 MB zwykle staje się 60–100 MB po sparsowaniu, a podświetlony DOM może to podwoić.

Początkujący~3 min czytaniaOpublikowano 2026-10-30Zaktualizowano 2026-10-30
Limity pamięci przeglądarki przy pracy z dużym JSON

Najważniejsze: nie ma stałego sufitu — szacuj z pamięci, bo sparsowany obiekt zwykle kosztuje 3–5 razy rozmiar tekstu, a podświetlony DOM podwaja to znów; powyżej 50 MB albo gdy liczba rekordów wierzchołkowych sięga setek tysięcy, pokrój, strumieniuj lub przejdź na aplikację lokalną, zamiast wciskać to do karty.

Gdzie znika pamięć

Tekst JSON 20 MB istnieje trzy razy:

  1. Surowy łańcuch: 20 MB
  2. Sparsowany graf obiektów: zwykle 60–100 MB (zduplikowane łańcuchy, nagłówki obiektów, tablice haszujące)
  3. Podświetlony DOM: jeden węzeł per token, łatwo kolejne 2x

Bufory edytora, stosy cofania i cache’e podświetlania składni to dodatki. „Plik 20 MB” może przekroczyć 200 MB rezydentnych.

Zasady praktyczne

Rozmiar Desktop Mobile
< 5 MB Płynnie Płynnie
5–20 MB Lekkie opóźnienie, 1–3 s do sformatowania Zauważalne opóźnienie, może się zawiesić
20–50 MB Wykonalne, ale ciężkie; wyłącz podświetlanie Prawdopodobnie crash
> 50 MB Niezalecane Bezużyteczne

Te wartości przesuwają się z urządzeniem, wersją przeglądarki i tym, czy podświetlanie jest włączone. Używaj ich dla rzędów wielkości, nie jako gwarancji.

Dlaczego więcej RAM-u tego nie naprawia

Karty mają twardy limit, a jego przekroczenie oznacza natychmiastowy crash, a nie łagodną degradację. Mobile jest jeszcze surowszy, odzyskując pamięć przy niskich setkach megabajtów.

Praca z dużymi plikami

Pokrój go.

head -c 1048576 big.json | jq .
jq '.items[0:100]' big.json

Strumieniuj go. stream-json, ijson, jq --stream przetwarzają rekord po rekordzie z pamięcią niezależną od rozmiaru pliku.

Użyj aplikacji lokalnej. Brak limitów karty, pełna pamięć maszyny: pobierz wersję desktopową.

Zmień format. Logi i strumienie zdarzeń powinny być NDJSON od początku — jeden rekord per linia, strumieniowalne z konstrukcji.

Poproś backend o przycięcie. Jeśli UI potrzebuje trzech pól, wysyłanie trzystu jest problemem projektowym API, a nie ograniczeniem przeglądarki.

Zmierzenie pliku

ls -lh data.json
jq 'length' data.json

Jeśli length jest w setkach tysięcy, paginacja lub strumieniowanie jest odpowiedzią niezależnie od rozmiaru bajtowego.

FAQ

Jak rozpoznać, w którym przedziale rozmiaru jest mój plik?

Sprawdź bajty przez ls -lh i liczbę rekordów wierzchołkowych przez jq 'length'. Pliki poniżej kilku megabajtów są płynne wszędzie, 20–50 MB działa na desktopie, ale się zacina, a powyżej 50 MB powinieneś strumieniować lub użyć narzędzia wiersza poleceń.

Co zrobić z plikiem powyżej 50 MB?

Pokrój go przez head -c albo strumieniuj przez jq, stream-json lub jq --stream, aby pamięć pozostała niezależna od rozmiaru pliku. Jeśli musisz obejrzeć cały dokument, użyj aplikacji desktopowej, której nie wiąże budżet pamięci karty. Logi i strumienie zdarzeń i tak należą do NDJSON.

Dodatkowe materiały