대용량 파일
VMark는 대부분의 마크다운 파일을 즉시 열지만, 매우 큰 파일은 응답성을 유지하기 위해 추가적인 주의가 필요합니다. 이 페이지에서는 VMark가 대용량 파일을 어떻게 처리하는지, 그리고 동작을 조정하는 방법을 설명합니다.
"대용량"의 기준
VMark는 파일을 열기 전에 크기에 따라 분류합니다:
| 크기 | 분류 | 동작 |
|---|---|---|
| < 1 MB | 작음 | WYSIWYG(서식 있는 텍스트) 모드에서 즉시 열립니다. |
| 1 MB – 5 MB | 큼 | 기본적으로 소스 모드에서 열립니다 — 1초 미만. 상태 표시줄에서 "WYSIWYG으로 전환"을 제공합니다. |
| 5 MB – 50 MB | 매우 큼 | 먼저 확인 대화상자가 나타납니다. 소스 모드에서만 열립니다. |
| ≥ 50 MB | 거부됨 | VMark가 파일 열기를 거부합니다. 대신 less, bat 또는 유사한 도구를 사용하세요. |
크기는 파일을 읽지 않고 운영 체제를 통해 확인되므로, 결정이 빠르며 데이터를 미리 로드하지 않습니다.
대용량 파일에 소스 모드를 사용하는 이유
소스 모드는 뷰포트 가상화가 적용된 CodeMirror를 사용합니다 — 문서의 보이는 부분만 렌더링됩니다. WYSIWYG 모드는 Tiptap/ProseMirror를 사용하며, 문서의 모든 블록에 대해 DOM 노드를 만들어야 합니다. 1.4 MB / 약 2,250개 블록의 마크다운 파일에서 처음 열 때 약 15초가 소요됩니다. 소스 모드는 동일한 파일을 1초 이내에 엽니다.
병목은 파싱이 아니라 ProseMirror의 뷰 구성 단계입니다. 파싱을 메인 스레드 밖으로 이동시켜도 체감 대기 시간을 의미 있게 개선하지는 못합니다.
상태 표시줄 안내
- WYSIWYG에서 대용량 파일 열기: 에디터가 마운트되는 동안 상태 표시줄 왼쪽에 "대용량 파일을 여는 중 (N MB)…" 라벨과 함께 무한 스피너가 표시됩니다. 에디터가 상호작용 가능해지면 사라집니다.
- 자동으로 소스 모드에서 열린 파일: 상태 표시줄에 "소스 모드에서 열렸습니다 (대용량 파일)." 와 WYSIWYG으로 전환 링크가 표시됩니다. 링크를 클릭하면 활성 탭이 WYSIWYG으로 전환됩니다. 파일을 닫고 다시 열면 소스 모드로 돌아갑니다 — 재정의는 세션별로 적용됩니다.
설정
설정 → 에디터 → 대용량 파일을 엽니다:
- 1 MB 이상 파일을 자동으로 소스 모드에서 열기 (기본값: 켜짐) — 5 MB까지의 파일에 대해 더 긴 열기 시간을 감수하고 WYSIWYG을 선호한다면 끄세요.
- 5 MB 이상 파일을 열기 전에 경고 (기본값: 켜짐) — 5 MB와 50 MB 사이의 파일에 대한 확인 대화상자를 건너뛰려면 끄세요. 이러한 파일은 여전히 소스 모드에서 열립니다.
50 MB의 강제 거부 한계는 사용자가 조정할 수 없습니다. 웹뷰는 메모리 부족 충돌의 위험 없이 임의로 큰 문자열을 안전하게 보유할 수 없습니다.
팁
- 매우 큰 파일을 WYSIWYG에서 계속 편집해야 한다면, 인덱스 문서에서 링크된 더 작은 파일들로 분할하는 것을 고려하세요. 마크다운은 더 작은 챕터들의 집합으로 잘 작동합니다.
- 대용량 파일을 읽거나 검색만 해야 한다면, 줄 번호 표시기와
찾기(Mod + F)가 있는 소스 모드가 보통 가장 빠른 작업 흐름입니다. 서식 > CJK 텍스트 서식과 같은 전체 문서 명령은 소스 모드 문서에서도 올바르게 실행됩니다.
엣지 케이스
- 파일이 열린 상태에서 커집니다. VMark는 열 때의 크기를 기준으로 분류를 결정합니다. 편집 중에 2 MB로 커진 파일은 선택한 모드를 유지합니다.
- 심볼릭 링크. 크기는 대상 파일을 반영하므로, 10 MB 파일에 대한 심볼릭 링크는 매우 큰 파일로 처리됩니다.
- 빈 파일. 0바이트 파일은 작은 파일로 분류되어 WYSIWYG에서 열립니다.
- 크기 확인과 읽기 사이에 파일이 사라짐. 일반적인 "파일을 찾을 수 없음" 오류가 표시되며, 추가 경고는 발생하지 않습니다.
알려진 제한 사항
- 임계값은 바이트 크기이며, 이는 실제 비용(블록 수)에 대한 대리 지표입니다. 짧은 블록이 수천 개 있는 600 KB 파일은 긴 단락으로 구성된 1.2 MB 파일보다 느릴 수 있습니다. 기본값은 보수적으로 설정되어 있습니다.
- 대용량 파일 이니셔티브의 C 단계(지연된 WYSIWYG 렌더링)는 아직 출시되지 않았습니다 — 상태는
dev-docs/plans/20260422-large-file-open-ux.md를 참조하세요.