BrowserSync 非常慢

Posted

技术标签:

【中文标题】BrowserSync 非常慢【英文标题】:BrowserSync extremely slow 【发布时间】:2014-09-08 13:48:36 【问题描述】:

我很乐意使用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

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

此外,BrowserSync 是使用 Gulp 还是通过命令行运行都没有区别。

有什么想法吗?

【问题讨论】:

【参考方案1】:

解决方案非常简单 - 但恕我直言不合逻辑。我的本地实例在http://project.local 下运行。将其更改为http://project.dev 解决了这个问题。我正在运行 OS X。

【讨论】:

有效。但是……但是……为什么? :-) 如果您也在运行 OS X,我想这与 DNS 查找有关(Bonjour 也使用 .local 域)。 Mac 用户的惊人提示。非常感谢! 在 Linux Ubuntu 14 上遇到了同样的问题,将我的 URL 从“local.domain.co.uk”更改为“domain.dev”效果很好!所以谢谢你,否则永远不会解决它。 请注意,现在 Chrome 中的 .dev 会强制重定向到 https,这是我在本地不想要的。强制我现在使用 .test。【参考方案2】:

您遇到的问题很可能是针对 .local 域上的 DNS 查找发出的 Bonjour IPv6 查找的结果。这些 IPv6 查找会产生超时延迟,直到发出原始 IPv4 DNS 查找。

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

替代解决方案

另一种方法是在主机文件中为每个 IPv4 .local 条目添加一个额外的 IPv6 localhost 条目(在 Linux 上:/etc/hosts,在 macOS 上通常:/private/etc/hosts)。

更改此主机内容...

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

  提示:使用正则表达式编辑器

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

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

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

::1  localhost

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

【讨论】:

哇哦!这简直让我大吃一惊。现在速度快多了!我想知道为什么当我回家工作时它比我工作时的网络慢。你刚刚救了我!谢谢! 轰隆隆。这是一个非常棒的提示。 @Jpsy 非常感谢 - 我看到每次刷新最多延迟 20 秒,不,几乎是即时的!这对我来说将是一个很好的节省时间:-) 这应该是公认的答案! 快如闪电。使用 BrowserSync + HTTPS 时就像一个魅力。 非常感谢您的解释!很高兴知道为什么某件事需要这么长时间。虽然接受的答案可能已经解决了它,但您已经为我们揭开了它的神秘面纱。我学到了宝贵的一课,关于缓慢 w.r.t 的可能原因。网络/开发服务器!【参考方案3】:

就我而言,我使用的是 Windows。在分析了萤火虫上的网络选项卡后,我注意到缺少一些图像。一旦我修复了图像,它就可以快速运行!

【讨论】:

【参考方案4】:

我尝试了其他方法,效果很好。

我使用以下命令在我的 Mac 上禁用了 IPv6:

networksetup -setv6off Wi-Fi

您可以像这样重新打开它:

networksetup -setv6automatic Wi-Fi

我不想切换到 .dev,因为我所有的网站都是这样设置的:

Live site: https://www.myawesomesite.com
Local site: https://dev.myawesomesite.com

【讨论】:

以上是关于BrowserSync 非常慢的主要内容,如果未能解决你的问题,请参考以下文章

browsersync使用

browserSync.reload 和 browserSync.stream()) - 有啥区别?

Browsersync 简介 and 使用

gulp+browserSync自动刷新页面

浏览器同步测试神器 — BrowserSync

Browsersync的安装及使用方法