대용량 JSON 파싱, 렌더링, 스트리밍
파싱이 병목인 경우는 흔하지 않습니다. 렌더링과 복사가 병목입니다. "파싱 → 순회 → 렌더 → 전송" 네 계층을 따라 최적화해야 노력이 헛되지 않습니다.
중급약 13분 소요2026-10-31 업데이트
수십 MB의 JSON 파일은 메인 스레드를 멈출 수 있고, 정교하게 만든 JSON은 서비스를 뚫을 수 있습니다. 이 카테고리는 처리량과 방어를 모두 다룹니다.
6개 문서파싱이 병목인 경우는 흔하지 않습니다. 렌더링과 복사가 병목입니다. "파싱 → 순회 → 렌더 → 전송" 네 계층을 따라 최적화해야 노력이 헛되지 않습니다.
JSON.parse 자체는 안전합니다. 위험은 그 이후에 일어나는 일입니다. 딥 머지, 경로 할당, HTML 인라인, 무제한 깊이와 크기.
minify는 원본 JSON을 30~50% 줄이지만 gzip이 그 이득의 대부분을 지웁니다. 실제 모양별 측정 수치, 그리고 minify가 일을 그르치는 네 경우를 다룹니다.
10MB JSON 파일이 V8 힙에서 30~50MB가 될 수 있습니다. 문자열, 객체, 숫자의 실제 비용, process.memoryUsage로 기준선을 잡는 방법, 스트리밍이 도움이 되는 때를 배웁니다.
끊김은 스크롤할 때가 아니라 DOM 노드를 만들 때 시작됩니다. 접기 우선 렌더, 가상 목록, 검색 하이라이트, Worker 경계와 지표를 다룹니다.
수십 MB짜리 JSON 내보내기는 텍스트 편집기와 온라인 도구에서 자주 멈추지만, 파싱 자체는 수백 밀리초면 끝납니다. 45MB·50만 레코드 샘플로 각 단계의 시간과 메모리를 실측해 진짜 비용이 줄 수와 노드 수임을 보이고, 파일 크기별 도구 선택표를 제시합니다. 온라인 보기, 명령줄 추출, 스트리밍 처리, 데스크톱 앱의 역할 구분까지 정리했습니다.