BrowserSync очень медленный

Я хотел бы использовать BrowserSync для разработки. Однако загрузка страницы (не только перезагрузка после изменений) происходит крайне медленно.

Я использую режим proxy. Просмотр страницы без BrowserSync происходит быстро, как и должно быть.

Одной из причин может быть следующая ошибка при установке BrowserSync:

> [email protected] install /usr/local/lib/node_modules/browser-sync/node_modules/socket.io/node_modules/engine.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
SOLINK_MODULE(target) Release/bufferutil.node: Finished
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
SOLINK_MODULE(target) Release/validation.node: Finished

Я установил узел с нуля (используя brew и установщик пакетов), но не смог избавиться от ошибки.

Кроме того, не имеет значения, запускается ли BrowserSync с помощью Gulp или из командной строки.

Есть идеи?


person Rico Leuthold    schedule 17.07.2014    source источник


Ответы (4)


Решение довольно простое, но имхо нелогичное. Мой локальный экземпляр работал под http://project.local. Изменение его на http://project.dev решило проблему. Я использую OS X.

person Rico Leuthold    schedule 09.08.2014
comment
Работает. Но... но... почему? - person henrijs; 07.11.2014
comment
:-) Если вы также используете OS X, я думаю, это как-то связано с поиском DNS (Bonjour также использует домен .local). - person Rico Leuthold; 07.11.2014
comment
Удивительный совет для пользователей Mac. Большое спасибо! - person Armel Larcier; 15.11.2014
comment
Была такая же проблема в Linux Ubuntu 14, и изменение моего URL-адреса с «local.domain.co.uk» на «domain.dev» сработало отлично! Так что спасибо, как никогда бы не решил это иначе. - person JDavies; 26.03.2015
comment
Это работает на Ubuntu 14.10. Было бы неплохо объяснить, почему домен .com замедляет работу браузера. - person matthiasdv; 12.06.2015
comment
Действительно безумный! Я использую Linux Mint 17.3, и загрузка страницы по-прежнему завершается ошибкой «Превышено максимальное время выполнения». Основываясь на ваших советах, я просто изменил localhost:3000 на 127.0.0.1:3000 в адресной строке, и проблема решена. Кстати, бесконечная загрузка была ограничена только Chrome, даже со всеми отключенными расширениями. - person Kout; 25.10.2016
comment
Чертовски важно для всех на macOS - person ; 26.02.2018
comment
Это безумие, то же самое здесь, я изменил .local на .dev, и он отлично работает, я на Mac - person James Okpe George; 25.07.2018
comment
Обратите внимание, что .dev в Chrome в настоящее время вызывает перенаправление на https, что мне не нужно локально. Заставляет меня использовать .test сейчас. - person kapoko; 04.09.2018
comment
См. решение ниже. По сути, это специальные поиски в этом домене, которые требуют предварительного разрешения записи дополнительных хостов. ::1 - person Dtipson; 23.04.2020

То, что вы испытываете, скорее всего, является результатом поиска Bonjour IPv6, выдаваемого для поиска DNS в доменах .local. Эти поиски IPv6 создают задержку тайм-аута до тех пор, пока не будет выдан исходный поиск DNS IPv4.

Решение @RicoLeuthold работает, потому что домены .dev не запускают поиск Bonjour в macOS. Но может быть ужасно менять все ваши виртуальные хосты, если у вас уже есть многие из них, работающие на доменах .local с проектами, настроенными на использование этих доменов .local.

АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ

Альтернативой является добавление дополнительной записи локального хоста IPv6 в файл hosts (в Linux: /etc/hosts, в macOS обычно: /private/etc/hosts) для каждой записи IPv4 .local.

Изменить содержимое этого хоста...

127.0.0.1   phpmyadmin.local
127.0.0.1   project1.local
127.0.0.1   project2.local

...к размещенному контенту...

::1 phpmyadmin.local
127.0.0.1   phpmyadmin.local
::1 project1.local
127.0.0.1   project1.local
::1 project2.local
127.0.0.1   project2.local


СОВЕТ: ИСПОЛЬЗУЙТЕ РЕДАКТОР REGEXP

Если вы используете такой редактор, как Atom или Sublime Text, поддерживающий поиск/замену регулярных выражений, вот шаблон для обновления вашего файла hosts:

Search:
(127.0.0.1)(.*)$
Replace:
::1$2\n$1$2

Этот шаблон также добавит записи IPv6 к общей записи локального хоста IPv4 в верхней части файла hosts. После выполнения поиска/замены вы должны проверить верхнюю часть файла на наличие повторяющейся записи...

::1  localhost

... и удалите один из дубликатов.

person Jpsy    schedule 26.07.2017
comment
Ух ты! Это просто поразило меня. Теперь это НАСТОЛЬКО быстрее! Мне было интересно, почему, когда я приходил домой на работу, он был медленнее, чем сеть на моей работе. Вы просто спасли меня! Спасибо! - person Aaron Olin; 23.11.2017
comment
Бум. Это адский совет. - person rob_was_taken; 04.07.2018
comment
@Jpsy Большое спасибо - я видел задержки до 20 секунд при каждом обновлении, нет, это почти мгновенно! Это здорово сэкономит мне время :-) ЭТО должен быть принятый ответ! - person simonl; 12.04.2019
comment
Пылающий быстро. Работает как шарм при использовании BrowserSync + HTTPS. - person Jimmy Adaro; 07.06.2019
comment
Большое спасибо за объяснение! Хорошо знать, почему что-то занимает так много времени. Хотя принятый ответ, возможно, решил эту проблему, вы демистифицируете ее для нас. Я усвоил ценный урок о возможных причинах медлительности w.r.t. веб/dev серверы! - person SidOfc; 06.12.2019

В моем случае я использовал окна. Проанализировав вкладку сети на firebug, я заметил, что несколько изображений отсутствуют. Как только я исправил изображения, все заработало быстро!

person Maximus    schedule 02.08.2015

Я пробовал что-то еще, и это сработало для меня очень хорошо.

Я отключил IPv6 на своем Mac с помощью следующей команды:

networksetup -setv6off Wi-Fi

Вы можете включить его обратно следующим образом:

networksetup -setv6automatic Wi-Fi

Я не хотел переходить на .dev, потому что все мои сайты настроены примерно так:

Live site: https://www.myawesomesite.com
Local site: https://dev.myawesomesite.com
person Patrick Hladun    schedule 14.02.2019