Bundle size optimization
misupov opened this issue · 0 comments
misupov commented
- все названия конструкторов вынести в отдельный файл и вместо написания
if (user._ === 'user')
писатьif (user._ === USER_CONSTRUCTOR_NAME)
. Билдер и парсер тоже должны использовать эти же константы. На сколько я понимаю, если правильно настроить Terser, можно добиться сжатия названий, и тогда у нас в коде будут только единожды встречаться строковые константы с названиями конструкторов. - похоже на предыдущую идею, но расширена не только на названия конструкторов, а и на названия полей. Опять же, выносим в константы и обращаемся к ним не как
user.first_name
, а какuser[FIRST_NAME]
. Таким образом, опять же, при правильной настройке Terser-а, можно добиться того, чтобы все длинные поля сообщений минифицировались. - Самое важное и самое сложное: мы можем урезать половину протокола, поскольку он у нас не используется. Можно определиться с API, которое мы хотим поддерживать в третьем этапе и выкинуть всё лишнее. Думаю, это уменьшит размер сервис-воркера раза в полтора, если грамотно к этому подойти.