1 Punkte von GN⁺ 2026-02-17 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Ein Single-HTML-Archivdateiformat, das von Webbrowsern effizient per Lazy Loading geladen werden kann und trotz Einbettung aller Assets gleichzeitig statisch, einzeln und effizient ist
  • Verbindet hinter einem HTML- und JavaScript-Header das ursprüngliche HTML und die Assets in Tarball-Form, wobei JS über HTTP-Range-Requests nur die benötigten Teile lädt
  • Bestehende Formate wie SingleFile oder MHTML sind zwar statisch und bestehen aus einer einzelnen Datei, aber ineffizient; Gwtar löst dieses Problem
  • Funktioniert nur mit Standard-Browserfunktionen ohne zusätzliche serverseitige Konfiguration; in einigen Umgebungen wie Cloudflare wird dafür der MIME-Typ x-gwtar verwendet
  • Sichert bei großen HTML-Seiten gleichzeitig Langzeitarchivierbarkeit und Zugänglichkeit und eignet sich damit für langfristiges Web-Archiving und die Aufbewahrung reproduzierbarer Forschungsmaterialien

Überblick über Gwtar

  • Gwtar ist ein neues Polyglot-Archivformat, das aus einer einzigen HTML-Datei besteht und bei dem der Browser per HTTP-Range-Request nur die benötigten Teile lädt
    • Wird auf Gwern.net zur Bereitstellung großer HTML-Archive verwendet
  • Das JS im HTML-Header bricht den Download der gesamten Datei ab und lädt nur die benötigten Assets per Teilanforderung (Range Request) nach
  • Dadurch liefert der Server nur eine einzige HTML-Datei aus, während der Nutzer nur die tatsächlich benötigten Assets herunterlädt
  • Sämtliche Funktionen sind mit Standard-Browserfunktionen umgesetzt und sichern so zukünftige Kompatibilität

Das dreifache Dilemma von HTML-Archiven

  • HTML-Archive hatten bisher die Einschränkung, dass sie nur zwei von drei Eigenschaften zugleich erfüllen konnten: Statisches Verhalten, eine einzelne Datei und Effizienz
    • Beispiel: SingleFile ist statisch und einzeln, aber ineffizient; WARC ist statisch und effizient, aber keine einzelne Datei
  • Mit SingleFile erzeugte Snapshots liefern vollständige statische Seiten, binden aber alle Assets per Base64 inline ein, wodurch die Dateigröße auf mehrere hundert MB anwachsen kann
  • Selbst wenn Nutzer nur einen Teil der Seite ansehen, müssen sie die gesamte Datei herunterladen, was ineffizient ist
  • Gwern.net trennte zur Lösung dieses Problems die Assets mit deconstruct_singlefile.php, verlor damit jedoch die Eigenschaft der Einzeldatei

Technischer Ansatz von Gwtar

  • Mithilfe von HTTP-Range-Requests können selektiv nur Teile einer Datei heruntergeladen werden
  • Verwendet eine verkettete Archivstruktur, bei der hinter HTML + JS-Header ein Tarball angehängt wird
  • Mit dem JS-Befehl window.stop() wird der Download nach dem Header abgebrochen, und nur die benötigten Assets werden angefordert
  • Der Browser rendert die Datei wie normales HTML, während das JS Asset-Anfragen abfängt und in Range-Requests umwandelt

Erstellung und Implementierung

  • Mit dem PHP-Skript deconstruct_singlefile.php lässt sich SingleFile-HTML in Gwtar umwandeln
    • Unterstützt Re-Kompression von JPG/PNG/GIF sowie das Hinzufügen von PAR2-FEC-Daten (Forward Error Correction)
  • Der Browser lädt nach Ausführung des JS nur die benötigten Assets per Range-Request; ist JS deaktiviert, wird stattdessen die gesamte Datei heruntergeladen
  • Standardbasiert, daher keine Serverkonfiguration oder zusätzliche Software erforderlich; außerdem lässt sich die einzelne Datei wieder in Multi-File-HTML zurückverwandeln

Leistung und Kompatibilität

  • Wenn Range-Requests nicht unterstützt werden, wird die gesamte Datei heruntergeladen; gzip/Brotli-Kompression kann die Geschwindigkeit dann verbessern
  • Cloudflare entfernt den Range-Header bei text/html-Antworten, daher setzt Gwern.net den MIME-Typ auf x-gwtar, um dies zu umgehen
  • Lokale Dateiansicht ist nicht möglich :
    • Das gilt ebenso für SingleFileZ, da Browser-Sicherheitsrichtlinien (CORS usw.) JS-Anfragen blockieren
    • Das wird zwar bedauert, aber als akzeptabler Trade-off betrachtet; lokales Browsing lässt sich durch Umwandlung in Dateien ohne JS-Abhängigkeit lösen

Erweiterte Funktionen

  • Am Ende einer Gwtar-Datei können zusätzliche Binärdaten angehängt werden, z. B. FEC, Signaturen oder Metadaten
  • Mit PAR2 ist eine Wiederherstellung bei teilweiser Dateibeschädigung möglich
  • Durch Einfügen einer GPG-Signatur in Form eines HTML-Kommentars ist Integritätsprüfung möglich
  • Für künftige Versionen sind Asset-Hash-Prüfung, automatisches Prefetching, eingebaute Kompression und Unterstützung mehrerer Seiten geplant

Einsatzmöglichkeiten

  • Geeignet für große HTML-Seiten oder reproduzierbare wissenschaftliche Forschung mit Forschungsdatensätzen (z. B. SQLite3)
  • Datenbanken können direkt im Browser per Range-Request geladen und analysiert werden
  • Wird als Web-Archivierungsformat vorgeschlagen, das Langzeitarchivierbarkeit und Zugänglichkeit zugleich sichert

Lizenz und weitere Entwicklung

  • Dokumentation und Code von Gwtar sind als CC-0 Public Domain veröffentlicht
  • Für künftige Versionen (v2) werden verpflichtendes FEC, eingebaute Kompression, Unterstützung mehrerer Dokumente und verbesserte Deduplizierung geprüft

Noch keine Kommentare.

Noch keine Kommentare.