LINUX.ORG.RU

Зачем минифицировать файлы когда есть brotli?

 


0

1

Я тут прикидывал, не привернуть ли компрессию brotli для ассетов. Сделал замеры что грузит браузер на моем сайтеге, получается интересно:

  • толькo gzip (js+css): 768К
  • толькo brotli: 461K
  • terser + gzip: 506K
  • terser + brotli: 319K

Получается, если не сильно упарываться о размерах, можно минифаер просто выкинуть. И не заморачиваться что в очередной версии что-нибудь отъедет.

Кто чего думает?

★★★★★

Я думаю, что компрессия на дополнительные 33% с помощью минификации - это капец, как дохрена, чтобы просто так отказываться.

Qasta
()

Надо всё на zstd переводить, со словарём. А бротли хорош только для веб страничек, которые на сервере постоянно меняются, но сейчас то как раз всё переводят на статичный HTML + динамику овер json/rest/graphql, и один жирный js, который и deflate нормально жмёт. Это уже давно известно, что пожатый zip js код вполне мелкий и минификаторы не сильно погоду меняют

menangen ★★★★★
()
Ответ на: комментарий от Qasta

Ну фишка в том, что голый бротли жмет сильнее чем минификатор с гзипом. Тут либо еще больший профит, либо минификатор выпиливать, на выбор.

Vit ★★★★★
() автор топика
Ответ на: комментарий от menangen

Ты пургу несешь. Гзип без минификатора жмет заметно слабее. У него окно скана мелкое. Бротли для динамики вообще не очень, он медленный. Им хорошо статические ассеты жать, при генерации.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Гзип без минификатора жмет заметно слабее.

Так зачем без минификатора смотреть?

Бротли для динамики вообще не очень, он медленный. Им хорошо статические ассеты жать, при генерации.

Разве JS является «динамикой»? Раз уж речь пошла о высоком об оптимизации, то JS должен лежать по-ближе.

Qasta
()
Ответ на: комментарий от Qasta

Так зачем без минификатора смотреть?

Потому что минификатор медленный и подглюкивает.

Vit ★★★★★
() автор топика

brotli весьма прожорлив, если жать им на лету,
у меня статические странички по 5 Мб весьма прилично нагружали nginx, по сравнению с простым gzip (тоже на лету), в итоге на него и перешла.

css/js конечно можно пожать и заранее, они не должны особенно часто меняться.

Sylvia ★★★★★
()
Ответ на: комментарий от ya-betmen

Лично я думаю, что почти метр зипованных ресурсов это пипец.

+1.

dimgel ★★★★★
()

Основная проблема в том, что brotli еще не поддерживается nginx без костылей. А с минифаером я поступил проще - написал собственных костылей несколько, чтобы выкидывать переносы строк, табы и сдвоенные пробелы в нужных местах, вообще без проблем… Те же 30%, наверное, и выигрываю, и уже не помню, как работает… Работает и ладно…

olegon-ru
()
Ответ на: комментарий от Sylvia

На лету и не надо. Только ассеты (жыэс + цыэсэс), они статические, но зато самые большие. А динамику гзипом.

Vit ★★★★★
() автор топика

Минифицировать? Это типа превратить в нечитаемую кашу с "котом на клавиатуре" вместо переменных? Тогда да, не нужно, ибо обфускация кода – первый шаг к пропиетарному грехопадению.

А если серьёзно, то смысл заморачиваться, чтобы получить ещё -200КБ кода? Тем более, что это лишняя точка отказа.

Korchevatel ★★★★★
()
Ответ на: комментарий от olegon-ru

Основная проблема в том, что brotli еще не поддерживается nginx без костылей.

Детали в студию. Он без костылей только на лету не жмет. А если бакенд отдаст уже сжатое, с правильными заголовками, то не должно быть проблем.

А с минифаером я поступил проще - написал собственных костылей несколько, чтобы выкидывать переносы строк, табы и сдвоенные пробелы в нужных местах, вообще без проблем… Те же 30%, наверное, и выигрываю, и уже не помню, как работает… Работает и ладно…

Может это и правильно. Только надо еще сорсмапы корректировать, иначе когда в браузере ошибка прилетит - очень трудно понять откуда.

Не уверен, что 100% корректно пробелы регекспами выпиливать. Они ведь могут быть внутри строки и в многострочных литералах. Хотя, если делаешь для себя лично, и помнишь про эту тонкость, то сойдет.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Korchevatel

Ко всем файлам сейчас сорсмапы идут. Так что какую кашу не сделай, браузер сумеет в дебагере размотать обратно аж до самого исходника (хоть до тайпскрипта).

А если серьёзно, то смысл заморачиваться, чтобы получить ещё -200КБ кода? Тем более, что это лишняя точка отказа.

Да я насчет размеров особо не парюсь. Просто сильно удивился, что простой и надежный бротли перекрывает эффект от упарывания с минифаером.

Сжимает он не шибро быстро, но точно не медленнее чем terser над исходником изгаляется.

Vit ★★★★★
() автор топика

Сжатие это хорошо, но минификация еще ускоряет разбор жс браузером, что тоже ускорение.

goingUp ★★★★★
()
Ответ на: комментарий от ya-betmen

Лично я думаю, что почти метр зипованных ресурсов это пипец.

Это хорошо, экономно) Простенькая страничка на bootstrap+vue (это еще экономные фреймворки) + пару либ будет как раз 1 мб js+css.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Сжатие это хорошо, но минификация еще ускоряет разбор жс браузером, что тоже ускорение.

буду удивлен, если есть реальная разница в скорости

MaZy ★★★★★
()
Ответ на: комментарий от goingUp

Простенькая страничка на bootstrap+vue (это еще экономные фреймворки) + пару либ будет как раз 1 мб js+css.

Это если ничего не жать и притащить (непонятно зачем) ещё какого-то монстра. Но емнип вуй+бутстрап это 700-800Кб (если сейчас не разжирели) а пожатые так и в 200 уложатся.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Но емнип вуй+бутстрап это 700-800Кб

Да, напутал, под 1 МБ это были минифицированные, а не пожатые.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Тут лучше на примеры замеров ссылаться, чтобы каждый сам решил, критично ему или нет. А то больше/меньше в темах про перфоманс это баззворды.

Ни разу не слышал, чтобы минификатор разбор значимо ускорял. Но если есть толковые статьи с выкладками, было бы интересно почитать.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.