Gwtar: 정적이고 효율적인 단일 파일 HTML 형식

7 hours ago 1

  • 웹 브라우저가 효율적으로 지연 로딩(lazy-loading) 할 수 있는 단일 HTML 아카이브 파일 형식으로, 모든 자산을 포함하면서도 정적·단일·효율성을 동시에 달성함
  • HTML과 JavaScript 헤더 뒤에 tarball 형태의 원본 HTML 및 자산을 결합하고, JS가 HTTP Range 요청을 통해 필요한 부분만 불러오는 구조
  • 기존 SingleFile이나 MHTML 등은 정적성과 단일성은 갖추지만 효율성이 부족했으며, Gwtar는 이를 해결함
  • 서버 측 추가 설정 없이 표준 브라우저 기능만으로 작동하며, Cloudflare 등 일부 환경에서는 MIME 타입 x-gwtar로 대응
  • 대용량 HTML 페이지의 보존성과 접근성을 동시에 확보해, 장기 웹 아카이빙 및 재현 가능한 연구 자료 보관에 유용함

Gwtar 개요

  • Gwtar는 단일 HTML 파일로 구성된 새로운 폴리글랏(Polyglot) 아카이브 형식으로, 브라우저가 HTTP Range 요청을 통해 필요한 부분만 로드함
    • Gwern.net의 대형 HTML 아카이브 제공에 사용
  • HTML 헤더의 JS가 파일 전체 다운로드를 중단하고, 필요한 자산만 부분 요청(range request) 으로 불러옴
  • 결과적으로 서버는 단일 HTML 파일만 제공하지만, 사용자는 필요한 자산만 다운로드함
  • 모든 기능이 표준 브라우저 기능으로 구현되어 미래 호환성 확보

HTML 아카이브의 삼중 딜레마

  • HTML 아카이브는 정적성, 단일 파일성, 효율성 중 두 가지만 만족시키는 기존 한계 존재
    • 예: SingleFile은 정적·단일이지만 비효율적, WARC는 정적·효율적이지만 단일 파일 아님
  • SingleFile로 생성된 스냅샷은 완전한 정적 페이지를 제공하지만, 모든 자산을 Base64로 인라인하여 파일 크기가 수백 MB로 커짐
  • 사용자는 페이지 일부만 보더라도 전체 파일을 다운로드해야 하는 비효율 발생
  • Gwern.net은 이를 해결하기 위해 deconstruct_singlefile.php로 자산을 분리했으나, 단일 파일성 상실

Gwtar의 기술적 접근

  • HTTP Range 요청을 활용해 파일 일부만 선택적으로 다운로드 가능
  • HTML + JS 헤더 뒤에 tarball을 결합한 연속(concatenated) 아카이브 구조 채택
  • JS의 window.stop() 명령으로 헤더 이후 다운로드를 중단하고, 필요한 자산만 요청
  • 브라우저는 일반 HTML처럼 렌더링하며, JS가 자산 요청을 가로채 Range 요청으로 변환

생성 및 구현

  • PHP 스크립트 deconstruct_singlefile.php로 SingleFile HTML을 Gwtar로 변환 가능
    • JPG/PNG/GIF 재압축 및 PAR2 FEC(전방 오류 정정) 데이터 추가 지원
  • 브라우저는 JS 실행 후 필요한 자산만 Range 요청으로 불러오며, JS 비활성 시 전체 파일 다운로드로 대체
  • 표준 기반으로 서버 설정이나 추가 소프트웨어 불필요, 단일 파일에서 다시 다중 파일 HTML로 복원 가능

성능 및 호환성

  • Range 요청 미지원 시 전체 파일을 다운로드하지만, gzip/Brotli 압축으로 속도 보완 가능
  • Cloudflare는 text/html 응답의 Range 헤더를 제거하므로, Gwern.net은 MIME 타입을 x-gwtar로 설정해 우회
  • 로컬에서는 파일 보기 불가능 :
    • 이건 SingleFileZ도 마찬가지로, 브라우저 보안 정책(CORS 등)으로 JS 요청이 차단되기 때문
    • 아쉽지만 허용 가능한 트레이드오프라고 생각하며, 로컬 브라우징은 JS의존적이지 않은 파일로 변환을 통해 해결 가능

확장 기능

  • Gwtar 파일 끝에 추가 바이너리 데이터(예: FEC, 서명, 메타데이터) 부착 가능
  • PAR2를 이용해 파일 일부 손상 시 복구 가능
  • GPG 서명을 HTML 주석 형태로 삽입해 무결성 검증 가능
  • 향후 버전에서는 자산 해시 검증, 자동 프리페치, 압축 내장, 다중 페이지 지원 등이 계획됨

활용 가능성

  • 대형 HTML 페이지나 연구 데이터셋(예: SQLite3) 을 포함한 재현 가능한 과학 연구에 적합
  • 브라우저에서 직접 데이터베이스를 Range 요청으로 불러와 분석 가능
  • 장기 보존성과 접근성을 동시에 확보하는 웹 아카이빙 포맷으로 제안됨

라이선스 및 향후 개발

  • Gwtar 문서와 코드는 CC-0 퍼블릭 도메인으로 공개
  • 향후 버전(v2)에서는 FEC 의무화, 내장 압축, 다중 문서 지원, 중복 제거 개선 등이 검토됨

Read Entire Article