Типичная современная SPA при загрузке тянет за собой гигабайты JavaScript. Посетитель на мобильном устройстве на слабом 3G видит белый экран ровно столько, сколько нужно для ухода к конкурентам. Ленивая загрузка кажется серебряной пулей — зачем грузить админ-панель пользователю, который её никогда не откроет? Но слепое разбиение кода порождает другую проблему: клиентское подёргивание интерфейса при переходе между разделами, когда браузер внезапно останавливает рендеринг для скачивания очередного чанка.
Так возникает парадокс: оптимизация становится врагом UX. Решение — предсказательный подгруз ресурсов.
Фундамент: как браузер управляет ресурсами
Браузеры агрессивно кэшируют статические ресурсы, но реагируют только на явные директивы. Критическая цепочка: парсинг HTML -> загрузка CSS/JS -> выполнение JS -> рендеринг. Ленивая загрузка обрывает эту цепочку, перенося загрузку не критического кода на момент использования.
Webpack / Vite / Rollup автоматизируют разбивку через dynamic import:
...