Phân tích, kết xuất và truyền luồng JSON lớn
Phân tích thường không phải nút cổ chai; kết xuất và sao chép mới là. Hãy tối ưu theo bốn lớp "phân tích → duyệt → kết xuất → truyền tải" để công sức của bạn không bị lãng phí.
Một tệp JSON hàng chục megabyte có thể làm đóng băng luồng chính, và JSON được dựng khéo léo có thể đâm thủng một dịch vụ; danh mục này bao gồm cả thông lượng lẫn phòng thủ.
6 bài viếtPhân tích thường không phải nút cổ chai; kết xuất và sao chép mới là. Hãy tối ưu theo bốn lớp "phân tích → duyệt → kết xuất → truyền tải" để công sức của bạn không bị lãng phí.
Bản thân JSON.parse an toàn; nguy hiểm là những gì xảy ra sau đó: gộp sâu, gán theo đường dẫn, nhúng vào HTML, độ sâu và kích thước không giới hạn.
Minify cắt 30-50% khỏi JSON thô, nhưng gzip xóa gần hết lợi ích đó. Các con số đo được trên hình dạng dữ liệu thật, cùng bốn trường hợp minify làm mọi thứ tệ hơn.
Một tệp JSON 10MB có thể thành 30-50MB trong heap V8. Hãy hiểu chuỗi, object và số thật sự tốn bao nhiêu, cách lấy đường cơ sở bằng process.memoryUsage, và khi nào truyền luồng giúp ích.
Giật bắt đầu khi các nút DOM được tạo, không phải khi bạn cuộn. Bài viết trình bày kết xuất ưu tiên thu gọn, danh sách ảo, tô sáng khi tìm kiếm và ranh giới Worker, kèm các chỉ số.
Các tệp xuất JSON hàng chục MB thường khiến trình soạn thảo văn bản và công cụ trực tuyến bị treo, trong khi việc phân tích chỉ mất vài trăm mili giây. Chúng tôi đo thời gian và bộ nhớ ở từng giai đoạn trên mẫu 45 MB với 500.000 bản ghi, chỉ ra chi phí thực nằm ở số dòng và số nút, và đưa ra bảng chọn công cụ theo dung lượng: xem trực tuyến, dòng lệnh, xử lý luồng và ứng dụng desktop.