JSON Toolkit

Trình duyệt xử lý được tệp JSON lớn đến mức nào

Kết luận: Không có giới hạn cố định; ràng buộc thật sự là ngân sách bộ nhớ của tab. Tệp 20MB thường phình lên 60–100MB sau khi phân tích, và DOM được tô sáng có thể nhân đôi con số đó một lần nữa.

Người mớiĐọc khoảng 3 phútXuất bản 2026-10-30Cập nhật 2026-10-30
Giới hạn bộ nhớ trình duyệt khi làm việc với JSON lớn

Tóm lại: không có trần cố định — hãy ước lượng từ bộ nhớ, vì đối tượng sau phân tích thường tốn gấp 3–5 lần kích thước văn bản và DOM được tô sáng lại nhân đôi thêm; trên 50MB, hoặc khi số bản ghi cấp cao nhất lên tới hàng trăm nghìn, hãy cắt lát, stream hoặc chuyển sang ứng dụng cục bộ thay vì cố nhồi vào một tab.

Bộ nhớ đi đâu

Một đoạn JSON 20MB tồn tại tới ba lần:

  1. Chuỗi thô: 20MB
  2. Đồ thị đối tượng sau phân tích: thường 60–100MB (chuỗi bị sao chép, header đối tượng, bảng băm)
  3. DOM được tô sáng: một node cho mỗi token, dễ dàng nhân đôi thêm lần nữa

Bộ đệm của trình soạn thảo, ngăn xếp hoàn tác và bộ nhớ đệm tô sáng cú pháp là phần cộng thêm. Một "tệp 20MB" có thể chiếm hơn 200MB bộ nhớ thường trú.

Quy tắc kinh nghiệm

Kích thước Máy tính để bàn Di động
< 5MB Mượt Mượt
5–20MB Hơi chậm, 1–3 giây để định dạng Chậm rõ rệt, có thể đóng băng
20–50MB Dùng được nhưng nặng; hãy tắt tô sáng Nhiều khả năng sập
> 50MB Không khuyến nghị Không dùng được

Các con số này thay đổi theo thiết bị, phiên bản trình duyệt và việc bật tô sáng hay không. Hãy dùng chúng để ước lượng bậc độ lớn, đừng coi là bảo đảm.

Vì sao thêm RAM không giải quyết được

Tab có giới hạn cứng, và vượt qua nghĩa là sập ngay lập tức thay vì suy giảm từ từ. Di động còn khắt khe hơn, chỉ thu hồi ở mức vài trăm megabyte thấp.

Làm việc với tệp lớn

Cắt lát.

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

Stream. stream-json, ijson, jq --stream xử lý từng bản ghi với bộ nhớ độc lập khỏi kích thước tệp.

Dùng ứng dụng cục bộ. Không giới hạn tab, dùng toàn bộ bộ nhớ máy: tải bản máy tính để bàn.

Đổi định dạng. Log và luồng sự kiện nên là NDJSON ngay từ đầu — một bản ghi mỗi dòng, có thể stream theo thiết kế.

Yêu cầu backend cắt gọn. Nếu giao diện chỉ cần ba trường thì việc gửi đi ba trăm trường là vấn đề thiết kế API, không phải giới hạn của trình duyệt.

Đo kích thước tệp của bạn

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

Nếu length lên tới hàng trăm nghìn, thì phân trang hoặc streaming mới là câu trả lời, bất kể kích thước byte.

Câu hỏi thường gặp

Làm sao biết tệp của tôi thuộc dải kích thước nào?

Kiểm tra số byte bằng ls -lh và số bản ghi cấp cao nhất bằng jq 'length'. Tệp dưới vài megabyte chạy mượt ở mọi nơi, 20–50MB chạy được trên máy tính nhưng giật, còn trên 50MB bạn nên stream hoặc dùng công cụ dòng lệnh.

Tôi nên làm gì với tệp trên 50MB?

Hãy cắt lát bằng head -c, hoặc stream bằng jq, stream-json hay jq --stream để bộ nhớ không phụ thuộc vào kích thước tệp. Nếu cần xem toàn bộ tài liệu, hãy dùng ứng dụng máy tính để bàn, vốn không bị ràng buộc bởi ngân sách bộ nhớ của tab. Dù sao thì log và luồng sự kiện cũng nên ở dạng NDJSON.

Đọc thêm