Skip to content

대용량 파일 ​

VMark는 대부분의 마크다운 파일을 즉시 열지만, 매우 큰 파일은 응답성을 유지하기 위해 추가적인 주의가 필요합니다. 이 페이지에서는 VMark가 대용량 파일을 어떻게 처리하는지, 그리고 동작을 조정하는 방법을 설명합니다.

"대용량"의 기준 ​

VMark는 파일을 열기 전에 크기와, Markdown의 경우 추정 블록 수에 따라 분류합니다:

크기 또는 블록 수분류동작
< 1 MB 및 추정 1,200개 블록 미만작음WYSIWYG(서식 있는 텍스트) 모드에서 즉시 열립니다.
1 MB – 5 MB 또는 추정 1,200개 이상 블록큼기본적으로 소스 모드에서 열립니다 — 1초 미만. 상태 표시줄에서 "WYSIWYG으로 전환"을 제공합니다.
5 MB – 50 MB매우 큼먼저 확인 대화상자가 나타납니다. 소스 모드에서만 열립니다.
≥ 50 MB거부됨VMark가 파일 열기를 거부합니다. 대신 less, bat 또는 유사한 도구를 사용하세요.

크기는 파일을 읽지 않고 운영 체제를 통해 확인됩니다. Markdown 파일이 1 MB 미만이면 VMark가 이어서 파일 바이트를 한 줄씩 스캔해 블록 수를 추정합니다 — Markdown 분석이 아닙니다 — 따라서 판단이 빠르게 유지되고 문서가 웹뷰에 로드되지 않습니다.

대용량 파일에 소스 모드를 사용하는 이유 ​

소스 모드는 뷰포트 가상화가 적용된 CodeMirror를 사용합니다 — 문서의 보이는 부분만 렌더링됩니다. WYSIWYG 모드는 Tiptap/ProseMirror를 사용하며, 문서의 모든 블록에 대해 DOM 노드를 만들어야 합니다. 1.4 MB / 약 2,250개 블록의 마크다운 파일에서 처음 열 때 약 15초가 소요됩니다. 소스 모드는 동일한 파일을 1초 이내에 엽니다.

뷰 구성 비용을 좌우하는 것은 파일 크기가 아니라 블록 수입니다. 거의 같은 크기(377~397 KB)이면서 바이트가 블록으로 나뉘는 방식만 다른 세 개의 픽스처는 601, 1,201, 3,401개 블록에서 각각 3.6초, 5.2초, 18초에 열렸습니다. 짧은 블록 3,773개로 이루어진 524 KB 문서는 해당 머신에서 30초 넘게 걸렸습니다 — 1 MB 바이트 임계값 아래이지만 창이 응답을 멈추는 지점을 훨씬 넘습니다. 그래서 블록 추정만으로 파일을 소스 모드로 라우팅할 수 있습니다.

시간의 대부분은 파싱이 아니라 뷰를 구성하고 배치하는 데 쓰입니다. 느린 컴퓨터에서 긴 CJK 문서를 측정한 결과, 파싱은 에디터를 여는 비용의 4분의 1에서 5분의 2였습니다.

문서를 여는 동안 ​

VMark는 문서의 서식 있는 텍스트 뷰를 만들기 전에 창이 메뉴, 단축키, 닫기 버튼에 응답하도록 하며, 문서는 그 직후에 나타납니다. 예전에는 긴 문서를 먼저 만들었기 때문에 느린 컴퓨터에서는 창이 준비되지 못할 수 있었습니다. 메뉴 반응이 늦어지고, 로그에는 menu commands did not mount within 5000ms가 남았습니다.

WYSIWYG가 열 때 하는 작업도 문서 규모에 걸맞게 유지됩니다:

  • 이미지는 보이는 영역에 가까워질 때 불러옵니다.
  • CJK 자간(설정 → 에디터 → 타이포그래피)은 꺼져 있는 동안(기본값) 아무 작업도 하지 않으며, 켜져 있으면 문서를 한 번만 검사합니다.
  • 코드 강조, CJK 자간, lint 표시 같은 장식의 비용은 문서 길이에 대략 비례합니다. 예전에는 아주 긴 문서에서 제곱에 비례하는 비용이 들었습니다.

상태 표시줄 안내 ​

  • WYSIWYG에서 대용량 파일 열기: 에디터가 마운트되는 동안 상태 표시줄 왼쪽에 "대용량 파일을 여는 중 (N MB)…" 라벨과 함께 무한 스피너가 표시됩니다. 에디터가 상호작용 가능해지면 사라집니다.
  • 자동으로 소스 모드에서 열린 파일: 상태 표시줄에 "소스 모드에서 열렸습니다 (대용량 파일)." 와 WYSIWYG으로 전환 링크가 표시됩니다. 링크를 클릭하면 활성 탭이 WYSIWYG으로 전환됩니다. 파일을 닫고 다시 열면 소스 모드로 돌아갑니다 — 재정의는 세션별로 적용됩니다.
  • WYSIWYG로 표시할 수 없는 문서: 인용문이나 목록이 1000단계를 넘게 중첩된 문서는 파일 크기와 관계없이 서식 있는 텍스트로 분석할 수 없습니다. 중첩 깊이를 알려 주는 메시지와 함께 소스 모드로 열리며, 상태 표시줄에 "소스 모드로 열림(WYSIWYG로 표시할 수 없음)." 이 표시됩니다. 중첩을 줄인 뒤 WYSIWYG으로 전환 을 사용하세요.

설정 ​

설정 → 에디터 → 대용량 파일을 엽니다:

  • 큰 파일을 자동으로 소스 모드에서 열기 (기본값: 켜짐) — 1 MB가 넘는 파일과 블록 밀도가 높은 Markdown이 대상입니다. 5 MB까지의 파일에 대해 더 긴 열기 시간을 감수하고 WYSIWYG을 선호한다면 끄세요.
  • 5 MB 이상 파일을 열기 전에 경고 (기본값: 켜짐) — 5 MB와 50 MB 사이의 파일에 대한 확인 대화상자를 건너뛰려면 끄세요. 이러한 파일은 여전히 소스 모드에서 열립니다.

50 MB의 강제 거부 한계는 사용자가 조정할 수 없습니다. 웹뷰는 메모리 부족 충돌의 위험 없이 임의로 큰 문자열을 안전하게 보유할 수 없습니다.

팁 ​

  • 매우 큰 파일을 WYSIWYG에서 계속 편집해야 한다면, 인덱스 문서에서 링크된 더 작은 파일들로 분할하는 것을 고려하세요. 마크다운은 더 작은 챕터들의 집합으로 잘 작동합니다.
  • 대용량 파일을 읽거나 검색만 해야 한다면, 줄 번호 표시기와 찾기(Mod + F)가 있는 소스 모드가 보통 가장 빠른 작업 흐름입니다.
  • 서식 → CJK → 전체 파일 서식 지정과 같은 전체 문서 명령은 소스 모드 문서에서도 올바르게 실행됩니다.

엣지 케이스 ​

  • 파일이 열린 상태에서 커집니다. VMark는 열 때의 크기를 기준으로 분류를 결정합니다. 편집 중에 2 MB로 커진 파일은 선택한 모드를 유지합니다.
  • 심볼릭 링크. 크기는 대상 파일을 반영하므로, 10 MB 파일에 대한 심볼릭 링크는 매우 큰 파일로 처리됩니다.
  • 빈 파일. 0바이트 파일은 작은 파일로 분류되어 WYSIWYG에서 열립니다.
  • 크기 확인과 읽기 사이에 파일이 사라짐. 일반적인 "파일을 찾을 수 없음" 오류가 표시되며, 추가 경고는 발생하지 않습니다.

알려진 제한 사항 ​

  • 블록 수는 분석이 아니라 추정입니다. 빈 줄로 구분된 텍스트, 제목, 목록 항목, 표 행, 각 펜스 코드 블록을 하나의 블록으로 세고, 펜스 안의 코드와 프런트매터 줄은 건너뜁니다. 특이한 구조의 문서는 WYSIWYG로도 충분히 빨랐을 텐데 소스 모드로 라우팅될 수 있습니다. WYSIWYG으로 전환 은 클릭 한 번입니다. Markdown이 아닌 파일은 블록 수로 라우팅되지 않습니다.
  • WYSIWYG는 여전히 파일을 열 때 문서의 모든 블록을 구성합니다 — 이미지와 인라인 수식만 보이는 영역에 가까워질 때 나중에 불러오거나 렌더링됩니다 — 따라서 대용량 파일을 WYSIWYG로 전환하면 위에서 설명한 열기 시간이 모두 소요됩니다.