An jenem Nachmittag saß ich an meinem Arbeitsplatz und ließ es ruhig angehen, als plötzlich die Gruppe explodierte – GitHub war nicht erreichbar. Zuerst dachte ich, das Firmennetzwerk spinnt, aber als ich auf Twitter schaute, jammerten Entwickler auf der ganzen Welt. Jemand scherzte, dies könnte der Tag mit dem stärksten Produktivitätsrückgang in der Menschheitsgeschichte sein. Ich lachte zunächst mit, bis mir klar wurde, dass mein Projekt genau an diesem Tag live gehen sollte.
Die Sache war die: Ich hatte ein kleines Projekt, dessen Frontend-Ressourcen nach dem Bündeln etwa 3 MB JS-Code umfassten. Normalerweise läuft die Bereitstellung über CI, aber als GitHub down war, konnte CI nicht laufen, also musste ich die lokal gebauten Dateien manuell auf den Server hochladen. Beim Hochladen wunderte ich mich, warum der Upload so langsam war, der Fortschrittsbalken kroch wie eine Schnecke. Nach fast zehn Minuten war der Upload endlich fertig, aber als ich die Seite öffnete, sah ich nur einen weißen Bildschirm.
Ich dachte, es sei ein Serverproblem, durchsuchte stundenlang die Logs und stellte schließlich fest, dass beim Dateitransfer etwas schiefgelaufen war und sich seltsame Zeichen in den Code eingeschlichen hatten. Ich war völlig perplex, nur noch eine halbe Stunde bis zum Livegang, ein Neubau war nicht rechtzeitig möglich, und ein Rollback hatte ich nicht gesichert. In diesem Moment wurde mir wirklich bewusst, dass, wenn ich mir angewöhnt hätte, den Code zu komprimieren, die Datei halb so groß wäre, die Wahrscheinlichkeit von Übertragungsfehlern viel geringer wäre und ich es vielleicht rechtzeitig geschafft hätte.
Wie habe ich das später gelöst? Ich kramte ein Online-Tool hervor, das ich irgendwann mal gespeichert hatte, namens JS-Formatierung und -Komprimierung. Normalerweise benutze ich so etwas überhaupt nicht, ich dachte, Hauptsache der Code läuft, ob komprimiert oder nicht, ist egal. Aber an jenem Tag versuchte ich es als letzten Ausweg, warf die lokale 3-MB-Quelldatei hinein, klickte auf Komprimieren, und nach ein paar Sekunden kam eine 1,2-MB-Datei heraus. Ich lud sie schnell hoch, ersetzte die kaputte Datei, aktualisierte die Seite, und es funktionierte.
In diesem Moment starrte ich auf den Bildschirm, und meine Gefühle waren gemischt. Man sagt, Code-Komprimierung sei so eine Sache, die normalerweise unscheinbar, ja sogar überflüssig erscheint – bei der heutigen Netzgeschwindigkeit und den günstigen Bandbreiten kümmert sich doch niemand um ein paar Kilobyte. Aber sobald unerwartete Situationen auftreten, wie GitHub down, CI ausgefallen, Netzwerk instabil, dann merkt man, dass kleine Dateigröße einfach ein hartes Argument ist. Sie spart nicht nur Datenverkehr, sondern verkürzt auch die Übertragungszeit, verringert die Fehlerwahrscheinlichkeit und kann dich sogar in kritischen Momenten retten.
Und ehrlich gesagt, die Vorteile der Code-Komprimierung gehen weit darüber hinaus. Der komprimierte Code macht es anderen schwer, die Logik zu stehlen, auch wenn es keine Verschlüsselung ist, hält es zumindest diejenigen ab, die einfach Rechtsklick und Quellcode anzeigen machen. Außerdem laden komprimierte Dateien schneller, was die Benutzererfahrung verbessert, besonders auf Mobilgeräten, wo ein paar hundert KB weniger eine Sekunde weniger Weißbildschirm bedeuten können. Früher hielt ich das alles für Kleinigkeiten, aber nach diesem Erlebnis habe ich mich völlig geändert.
Jetzt ist es meine Gewohnheit, nach jedem Build kurz JS-Formatierung und -Komprimierung durchlaufen zu lassen, bevor ich bereitstelle. Es kostet nicht viel Mühe, aber es beruhigt. Man weiß nie, ob morgen oder ein Unfall zuerst kommt, GitHub kann down sein, CI kann ausfallen, das Netzwerk kann schwanken, aber eine gut komprimierte kleine Datei ist immer deine zuverlässigste Backup-Lösung.
Also, warte nicht, bis etwas passiert, um es zu bereuen. Komprimiere öfter mal, das kann in kritischen Momenten Leben retten. Das ist keine tiefgreifende Technik, sondern eine einfache Gewohnheit, aber oft sind es genau solche kleinen Gewohnheiten, die entscheiden, ob du in Panik gerätst oder gelassen reagierst.