BrowserSync非常慢

Ric*_*old 31 browser performance sync node.js browser-sync

我很乐意使用BrowserSync进行开发.但是,页面加载(不仅仅是在更改后重新加载)非常慢.

我用的是proxy模式.在没有BrowserSync的情况下浏览页面应该很快.

安装BrowserSync时,一个原因可能是以下错误:

> ws@0.4.31 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
Run Code Online (Sandbox Code Playgroud)

我从头开始安装节点(使用brew和包安装程序),但无法摆脱错误.

此外,如果使用Gulp或命令行运行BrowserSync,则没有任何区别.

任何的想法?

Ric*_*old 55

解决方案很简单 - 但不合逻辑的imho.我在我的本地实例下运行http://project.local.改变它来http://project.dev解决问题.我正在运行OS X.

  • :-)如果你也运行OS X,我想它与DNS查找有关(Bonjour也使用.local域). (13认同)
  • mac用户的惊人提示.非常感谢! (4认同)
  • 请注意,当今Chrome中的.dev会强制重定向到https,我不希望在本地使用。强迫我现在使用.test。 (3认同)
  • 作品。但是...但是...为什么呢? (2认同)

Jps*_*psy 24

您体验的很可能是为.local域上的DNS查找发出Bonjour IPv6查找的结果.这些IPv6查找会在发出原始IPv4 DNS查找之前创建超时延迟.

@RicoLeuthold的解决方案有效,因为.dev域不会在macOS上触发Bonjour查找.但是如果已经有许多vHosts运行在.local域上,并且项目配置为使用这些.local域,那么改变所有vHosts可能会很糟糕.

替代解决方案

另一种方法是在主机文件中添加额外的IPv6 localhost条目(在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
Run Code Online (Sandbox Code Playgroud)

......主持内容......

::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
Run Code Online (Sandbox Code Playgroud)

  
提示:使用REGEXP编辑器

如果您使用的是能够进行正则表达式搜索/替换的Atom或Sublime Text等编辑器,则可以使用以下模式来更新主机文件:

Search:
(127.0.0.1)(.*)$
Replace:
::1$2\n$1$2
Run Code Online (Sandbox Code Playgroud)

此模式还将IPv6条目添加到hosts文件顶部的常规IPv4 localhost条目.在执行搜索/替换之后,您应该检查文件顶部是否有重复的条目...

::1  localhost
Run Code Online (Sandbox Code Playgroud)

...并删除其中一个重复项.

  • 哇哇!这让我大吃一惊.现在它的SOOO快得多!我想知道为什么当我回到家工作时,它比我工作的网络慢.你救我了!谢谢! (6认同)
  • 繁荣.这是一个小费. (5认同)
  • 这必须是公认的答案。 (3认同)
  • 天哪,那速度...太棒了!:: 1 domain.local做到了 (2认同)
  • @Jpsy非常感谢您-我看到每次刷新最多延迟20秒,不,它几乎是即时的!对我来说,这将是一个很好的节省时间的地方:-)这应该是公认的答案! (2认同)
  • 快速燃烧。当使用 BrowserSync + HTTPS 时,它就像一个魅力。 (2认同)
  • 非常感谢您的解释!很高兴知道为什么某件事需要这么长时间。虽然接受的答案可能已经解决了这个问题,但您已经为我们揭开了它的神秘面纱。我学到了关于 Web/开发服务器缓慢的可能原因的宝贵教训! (2认同)