Dlaczego minimalizacja HTML / JavaScript jest korzystna, gdy protokół HTTP obsługuje już kompresję danych gzip?
Zdaję sobie sprawę, że minimalizacja Javascript / HTML może znacznie zmniejszyć rozmiar plików JavaScript / HTML poprzez usunięcie niepotrzebnych białych znaków i być może zmianę nazw zmiennych na kilka liter każda, ale algorytm LZW nie radzi sobie szczególnie dobrze, gdy jest wiele powtórzeń znaki (np. dużo białych znaków?)
Zdaję sobie sprawę, że niektóre narzędzia minimalizacji Javascript nie tylko zmniejszają rozmiar. Na przykład kompilator zamykający Google próbuje również poprawić wydajność kodu poprzez wprowadzenie funkcji i wykonanie innych analiz. Ale głównym celem minimalizacji Javascript jest zwykle zmniejszenie rozmiaru pliku.
Zdaję sobie również sprawę, że istnieją inne powody, dla których możesz chcieć zminimalizować oprócz performance, takie jak zaciemnianie kodu. Ale znowu powód ten zwykle nie jest podkreślany tak bardzo, jak wzrost wydajności i zmniejszenie rozmiaru pliku. Na przykład kompilator zamknięcia nie jest reklamowany jako narzędzie zaciemniania, ale jako narzędzie do zmniejszania rozmiaru kodu i zwiększania prędkości pobierania.
Ile wydajności naprawdę zyskujesz dzięki minimalizacji Javascript / HTML, kiedy już znacznie zmniejszasz rozmiar pliku dzięki kompresji gzip?
źródło
Minification + gzip ogólnie daje lepsze wyniki, ponieważ gzip jest ogólnym algorytmem, nieprzystosowanym specjalnie do jednego lub drugiego wejścia, podczas gdy minifikator jest świadomy jego zawartości i może działać tak, jak ogólny algorytm kompresji. Może sobie również pozwolić na straty (pomyśl: całkowicie wyeliminuj komentarze i białe znaki - to 100% kompresji dla tych danych, jak możesz to pokonać?), Podczas gdy ogólna kompresja nie.
źródło
Możesz nie uzyskać zbyt dużej wydajności, ale nadal zmniejszysz wykorzystanie przepustowości. Jeśli możesz ogolić kilka KB z plików js (i css) poprzez minimalizację (i użycie sprite'ów css w celu zmniejszenia liczby żądań) i obsługujesz 1000 użytkowników dziennie, po miesiącu znacznie zmniejszysz przepustowość.
źródło
Jedną z najdroższych rzeczy, które robisz w aplikacji sieciowej, jest wysyłanie rzeczy w dół. Wysyłanie mniejszej ilości rzeczy niemal zawsze jest wygraną netto, jeśli płacisz w cyklach procesora.
Ponadto nie mam żadnych naukowych podstaw, aby to poprzeć, ale spodziewam się, że narzędzia do minimalizacji prawdopodobnie lepiej skompresują javascript niż gzip, jeśli z innych powodów niż narzędzia do minimalizacji są specyficzne dla domeny i można je dostroić, aby lepiej kompresowały javascript, podczas gdy gzip to ogólne narzędzie i pójdzie na kompromis w środku.
źródło