CodeKitHub
Tiếng Việt
Cách xem file JSON khổng lồ mà không làm treo trình duyệt

Cách xem file JSON khổng lồ mà không làm treo trình duyệt

Đăng ngày 23 thg 7, 2026

Dán một bản xuất API 50MB hay một bản xuất database đầy đủ vào bất kỳ công cụ JSON nào chạy trên trình duyệt — kể cả công cụ này — sẽ khiến tab bị chậm lại hoặc đơ hẳn. Đây không phải lỗi của riêng công cụ nào, mà là đặc điểm của cách trình duyệt render văn bản và DOM. Đây là những gì thực sự đang xảy ra và cách khắc phục.

Vì sao file JSON lớn làm treo trình duyệt, chứ không chỉ “tải chậm”

Có hai loại chi phí riêng biệt cộng dồn lại:

  1. Chi phí phân tích cú pháp (parsing). JSON.parse trên một chuỗi 50MB đúng định dạng mất khoảng nửa giây đến vài giây trên một laptop thông thường — đáng chú ý, nhưng không phải là vấn đề thực sự.
  2. Chi phí render. Đây mới là nguyên nhân thực sự làm treo tab. Nếu một công cụ render kết quả đã định dạng thành một khối văn bản khổng lồ (hoặc tệ hơn, một cây có thể thu gọn với một node DOM cho mỗi khóa), trình duyệt phải bố cục và vẽ có thể lên đến hàng triệu node DOM. Đây mới là thứ khiến tab không phản hồi, chứ không phải việc phân tích cú pháp.

Vì vậy giới hạn dung lượng mà bạn gặp phải gần như không bao giờ đến từ đặc tả JSON hay bộ phân tích cú pháp — nó đến từ việc yêu cầu trình duyệt vẽ một lượng văn bản hoặc giao diện lồng nhau khổng lồ cùng một lúc.

Quy trình thực sự cho những file thực sự lớn

Đừng mở toàn bộ file ở bất kỳ đâu trong trình duyệt. Thay vào đó:

  1. Trích xuất trước phần bạn cần. Nếu bạn đang debug một bản ghi bị lỗi bên trong một bản xuất 200MB, bạn không cần 199MB còn lại hiện ra trước mặt. Các công cụ dòng lệnh xử lý việc này mà không bao giờ phải nạp toàn bộ file vào bộ nhớ theo cách một tab trình duyệt làm:
    # trích xuất một khóa cấp cao nhất từ file khổng lồ, dạng streaming
    jq '.results[42]' huge-file.json > fragment.json
    
    # hoặc đơn giản là grep để tìm ngữ cảnh quanh một chuỗi đã biết trước
    grep -n '"user_id": 88214' huge-file.json
  2. Chỉ định dạng đoạn trích đó trong trình duyệt. Vài KB JSON đã trích xuất sẽ định dạng ngay lập tức và thực sự dễ đọc — đây là thói quen “chỉ định dạng đoạn bạn quan tâm” đáng xây dựng cho bất kỳ log hay bản xuất lớn nào, chứ không chỉ riêng trường hợp lỗi cụ thể này.
  3. Nếu bạn cần kiểm tra cấu trúc, không phải giá trị, hãy chạy jq 'keys' hoặc jq '. | length' cục bộ trước để hiểu hình dạng dữ liệu trước khi quyết định trích xuất gì. Bạn không cần xem 50.000 phần tử mảng để biết mảng đó có 50.000 phần tử.

Khi nào một công cụ trên trình duyệt thực sự vẫn ổn

Với phần lớn công việc debug thực tế — một phản hồi API, một file cấu hình, một payload webhook — bạn đang xử lý vài kilobyte đến vài megabyte, không phải hàng trăm. Trong phạm vi đó, dán trực tiếp vào một công cụ định dạng và nhận kết quả tức thì, dễ đọc, với vị trí lỗi chính xác nhanh hơn nhiều so với việc dùng dòng lệnh. Ngưỡng dung lượng khiến mọi thứ trục trặc cao hơn nhiều so với hầu hết mọi người nghĩ; cụ thể là “vài chục megabyte trở lên” mới gây rắc rối thực sự, chứ không phải “hơn một trang.”

Bảng tra nhanh

Dung lượng file Nên làm gì
Dưới ~5MB Dán trực tiếp vào công cụ định dạng trên trình duyệt — tức thì, ổn
~5–30MB Vẫn dùng được, nhưng sẽ có một khoảng dừng ngắn; chỉ định dạng phần bạn cần đọc
Từ 30MB trở lên Trích xuất đoạn liên quan bằng jq/grep trước, chỉ định dạng đoạn đó

Công cụ không cần một “chế độ file lớn” để giải quyết việc này — cách khắc phục là trích xuất trước khi xem, đây là một thay đổi quy trình làm việc, không phải giới hạn của công cụ.

← Quay lại Blog