Warum ist die Minimierung von HTML / Javascript von Vorteil?

13

Warum ist die Minimierung von HTML / Javascript von Vorteil, wenn das HTTP-Protokoll die Komprimierung von gzip-Daten bereits unterstützt?

Mir ist klar, dass die JavaScript / HTML-Minimierung die Größe von Javascript / HTML-Dateien erheblich reduzieren kann, indem unnötige Leerzeichen entfernt und die Variablen möglicherweise in jeweils wenige Buchstaben umbenannt werden. Der LZW-Algorithmus eignet sich jedoch nicht besonders gut, wenn viele wiederholt werden Zeichen (zB viel Leerzeichen?)

Mir ist klar, dass einige Tools zur Minimierung von Javascript mehr als nur die Größe reduzieren. Der Closure Compiler von Google versucht beispielsweise auch, die Code-Performance durch Inlining-Funktionen und andere Analysen zu verbessern. Aber der primäre Zweck der Javascript minification ist in der Regel der Dateigröße zu reduzieren.

Mir ist auch klar, dass es neben der Leistung noch andere Gründe gibt, wie beispielsweise die Verschleierung von Code. Aber auch dieser Grund wird normalerweise nicht so sehr betont wie der Leistungsgewinn und die Reduzierung der Dateigröße. Beispielsweise wird der Closure Compiler nicht als Verschleierungstool, sondern als Reduzierung der Codegröße und Verbesserung der Downloadgeschwindigkeit beworben.

Wie viel Leistung bringt Ihnen die JavaScript / HTML-Minimierung, wenn Sie die Dateigröße bereits mit der GZIP-Komprimierung erheblich reduzieren?

Channel72
quelle

Antworten:

10

Weil die gzip-Komprimierung einen eigenen Overhead (CPU) hat. Die Minimierung ist die erste "Low Hanging" -Komprimierung, die ohne CPU-Treffer angewendet werden kann.

Diese mögen unbedeutend erscheinen, die Zahlen machen jedoch bald Sinn, wenn es um Skalierung geht.

Außerdem müssen Sie mit der Minimierung weniger gzipen.

Dunkle Nacht
quelle
3
Werden moderne Webserver die Javascript-Dateien tatsächlich für jede Anfrage gzipen? Es ist wahrscheinlich, dass ein Server statische, komprimierte Inhalte zwischenspeichert, da Änderungen unwahrscheinlich sind.
Aaberg
@aaberg Trotzdem sind das mehr zwischengespeicherte Daten auf dem Server. (nicht, dass Caching nicht gut ist)
Chills42
@ chilis42: Die Server können vorab gezippte Dateien aus dem Dateisystem selbst bereitstellen, wenn dies das Problem ist.
Herby
+1 für die Skala. Wenn Sie 10 Benutzer und 100 Treffer pro Tag haben, ist es irrelavent. Wenn Sie 100.000 Treffer pro Stunde auf dem Server speichern müssen, bedeutet dies eine erhebliche Einsparung.
SoylentGray
2
Irgendetwas sagt mir, dass das Ausführen des vollständigen JavaScript-Compilers und mehrerer Optimierungsläufe für die interne Darstellung, die häufig in Java implementiert werden, keinen geringen CPU-Overhead bedeutet .
Oleg V. Volkov
5

Minification + gzip liefert im Allgemeinen bessere Ergebnisse, da gzip ein allgemeiner Algorithmus ist, der nicht speziell an die eine oder andere Eingabe angepasst ist, während der Minificator den Inhalt kennt und arbeiten kann, was der allgemeine Komprimierungsalgorithmus nicht kann. Es kann sich auch leisten, verlustbehaftet zu sein (denken Sie daran: Entfernen Sie Kommentare und Leerzeichen vollständig - das ist 100% Komprimierung für diese Daten, wie können Sie das übertreffen?), Während die allgemeine Komprimierung dies nicht kann.

Oleg V. Volkov
quelle
2

Möglicherweise erhalten Sie nicht zu viele Leistungsvorteile, aber Sie reduzieren trotzdem Ihre Bandbreitennutzung. Wenn Sie durch Minimierung (und Verwendung von CSS-Sprites, um die Anzahl der Anforderungen zu verringern) ein paar Kilobyte Ihrer JS- (und CSS-) Dateien einsparen können und täglich Tausende von Benutzern bedienen, reduzieren Sie nach einem Monat Ihre Bandbreite erheblich.

Steve Whitehouse
quelle
1
+1: Bei der Minimierung geht es um Einsparungen insgesamt. Es kann helfen, dass eine einzelne Anfrage schneller ist, aber der Sinn ist, die Bandbreitennutzung mit der Zeit zu verringern.
Joel Etherton,
1

Das Teuerste, was Sie in einer Webanwendung tun, ist, Dinge auf dem laufenden zu halten. Wenn Sie in CPU-Zyklen zahlen, ist es fast immer ein Nettogewinn, wenn Sie weniger Zeug über den Draht schicken.

Darüber hinaus liegen mir keine wissenschaftlichen Erkenntnisse vor, aber ich würde davon ausgehen, dass Minimierungstools JavaScript wahrscheinlich besser komprimieren können als gzip, wenn Minimierungstools nicht aus anderen Gründen domänenspezifisch sind und so angepasst werden können, dass JavaScript besser komprimiert wird, wohingegen gzip ist ein generisches Tool und geht Kompromisse in der Mitte ein.

Wyatt Barnett
quelle