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.

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:
- Rentetan mentah: 20MB
- Graf objek yang dihuraikan: biasanya 60–100MB (rentetan pendua, pengepala objek, jadual hash)
- 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.