JSON Toolkit

Sebesar manakah fail JSON yang boleh dikendalikan oleh pelayar

Inti pati: Tiada had tetap; kekangan ialah bajet memori tab anda. Fail 20MB biasanya menjadi 60–100MB selepas dihuraikan, dan DOM yang diserlahkan boleh menggandakannya lagi.

Pemula~3 min bacaanDiterbitkan 2026-10-30Dikemas kini 2026-10-30
Had memori pelayar semasa bekerja dengan JSON besar

Pokoknya: tiada siling tetap — anggarkan daripada memori, kerana objek yang dihuraikan biasanya berharga 3–5 kali saiz teks dan DOM yang diserlahkan menggandakannya lagi; melebihi 50MB, atau apabila bilangan rekod peringkat atas mencecah ratusan ribu, potong, strim atau beralih kepada aplikasi setempat dan bukannya memaksanya dalam tab.

Ke mana memori pergi

Teks JSON 20MB wujud tiga kali:

  1. Rentetan mentah: 20MB
  2. Graf objek yang dihuraikan: biasanya 60–100MB (rentetan pendua, pengepala objek, jadual hash)
  3. DOM yang diserlahkan: satu nod bagi setiap token, mudah menjadi 2x lagi

Penimbal editor, tindanan buat asal dan cache penyerlahan sintaks ialah tambahan. "Fail 20MB" boleh melebihi 200MB pendiaman.

Petua praktikal

Saiz Desktop Mudah alih
< 5MB Lancar Lancar
5–20MB Sedikit lengah, 1–3s untuk format Lengah ketara, mungkin tersekat
20–50MB Boleh dikendalikan tetapi berat; matikan penyerlahan Berkemungkinan ranap
> 50MB Tidak disyorkan Tidak boleh digunakan

Ini berubah mengikut peranti, versi pelayar dan sama ada penyerlahan dihidupkan. Gunakannya untuk urutan magnitud, bukan sebagai jaminan.

Mengapa lebih banyak RAM tidak membetulkannya

Tab mempunyai had keras, dan melebihinya bermaksud ranap serta-merta dan bukannya pengurangan yang lancar. Mudah alih lebih ketat lagi, menuntut semula dalam lingkungan ratusan megabait rendah.

Bekerja dengan fail besar

Potongkannya.

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

Strimkannya. stream-json, ijson, jq --stream memproses rekod demi rekod dengan memori bebas daripada saiz fail.

Gunakan aplikasi setempat. Tiada had tab, memori mesin penuh: muat turun desktop.

Tukar format. Log dan strim peristiwa sepatutnya NDJSON dari awal — satu rekod setiap baris, boleh distrim secara semula jadi.

Minta backend mengurangkan. Jika UI memerlukan tiga medan, menghantar tiga ratus ialah masalah reka bentuk API, bukan had pelayar.

Menilai saiz fail anda

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

Jika length berada dalam ratusan ribu, penomboran halaman atau strim ialah jawapannya tanpa mengira saiz bait.

Soalan Lazim

Bagaimana saya tahu jalur saiz mana fail saya tergolong?

Semak bait dengan ls -lh dan bilangan rekod peringkat atas dengan jq 'length'. Fail di bawah beberapa megabait lancar di mana-mana, 20–50MB berfungsi pada desktop tetapi tersekat, dan melebihi 50MB anda harus strim atau guna alat baris arahan.

Apa yang harus saya lakukan dengan fail melebihi 50MB?

Potongkannya dengan head -c, atau strimkannya dengan jq, stream-json atau jq --stream supaya memori kekal bebas daripada saiz fail. Jika anda perlu memeriksa keseluruhan dokumen, guna aplikasi desktop, yang tidak terikat pada bajet memori tab. Log dan strim peristiwa memang tergolong dalam NDJSON.

Bacaan lanjut