webpack-dev-server занимает целую вечность, чтобы загрузить пакет - PullRequest
6 голосов
/ 28 апреля 2020

webpack-dev-server занимает примерно минуту, чтобы перезагрузить веб-приложение. bundle.js это 4 Мб или около того - я знаю, что это большой, но он загружается с локального сервера, не должно ли это занять много времени? Также не время для перекомпиляции. Это просто перезагрузка. Таким образом, даже если ничего не изменилось, и я просто вызвал refre sh в браузере, минута - это сколько времени займет загрузка пакета.

enter image description here

Что может быть причиной для этого? Или это просто как обычно работает? Как можно даже устранить что-то подобное в webpack-dev-server? Я хотел бы найти узкое место.

1 Ответ

2 голосов
/ 02 мая 2020

Прежде всего, чтобы ответить на реальный вопрос - да - вот сколько времени требуется для загрузки файла такого размера по HTTP. И мы ничего не можем с этим поделать. Если у кого-то есть идеи, как ускорить фактическую процедуру загрузки (без кэширования), дайте мне знать в комментариях.

TL; DR

Единственное решение для этого На данный момент мне известно о кэшировании . Но вам нужно убедиться, что вы кешируете нужные вещи.

Случайные вещи, которые могут оказаться решением

У меня лично было два упущения в моей настройке. Тривиально, но абсолютно необходимо проверить / исправить.

Примечание: Следующее имеет смысл, только если вы разделяете код - сторонние библиотеки, которые не изменяются, должны загружаться отдельно от файлов, над которыми вы работаете (подробнее об этом ниже).

  1. Я отключил кэширование для открытых devtools. Я не помню, почему я включил эту функцию для начала и совершенно забыл, что я сделал. Так что получается очень плохая идея. Убедитесь, что у вас не включен один (убедитесь, что этот флажок снят! ). enter image description here

  2. Другая большая проблема заключается в том, что используемый мной VSCode, а именно Chrome Плагин отладчика для VSCode по умолчанию отключил кэширование. Так что веб-приложение в режиме отладки стало медленно загружаться из ниоткуда. Хорошей новостью является то, что есть возможность повернуть его обратно: disableNetworkCache ( true по умолчанию)

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

Советы из личного опыта

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

Если ваш проект уже достиг стадии, когда обновление просто невозможно, потому что Обновленные модули и плагины поставляются с новыми требованиями, которые могут быть несовместимы с файлами в вашем проекте, вам придется их удалить. Это может показаться сумасшедшим, но в конечном итоге это будет менее болезненным, чем попытка сделать это без него.

...