Javascript Web包开发服务器代理请求非常慢

Javascript Web包开发服务器代理请求非常慢,javascript,webpack,webpack-dev-server,Javascript,Webpack,Webpack Dev Server,我正在使用Web包开发服务器代理: devServer: { proxy: { '/api': { target: 'http://mybackedn.url', changeOrigin: true } } } 请求花费太多时间。 Chrome网络面板显示: 为什么会发生这种情况?如何解决这个问题?请求时间图中的灰色部分称为暂停时间,浅灰色部

我正在使用Web包开发服务器代理:

devServer: {
        proxy: {
            '/api': {
                target: 'http://mybackedn.url',
                changeOrigin: true
            }
        }
    }
请求花费太多时间。 Chrome网络面板显示:


为什么会发生这种情况?如何解决这个问题?

请求时间图中的灰色部分称为暂停时间,浅灰色部分(灰色后)称为排队时间。如果将鼠标悬停在瀑布图上,则可以看到相同的结果。以下是导致问题的原因和暂停时间的含义

失速/阻塞 请求在发送前等待的时间。此时间包括在代理协商中花费的任何时间。此外,这段时间还包括浏览器等待已建立的连接可重复使用时,遵守Chrome的TCP连接每源规则

(如果您忘记了,Chrome在悬停工具提示和“计时”面板下有一个“解释”链接。)

基本上,你会看到这一点的主要原因是,Chrome每次只会下载6个文件,其他请求将被暂停,直到连接槽可用为止

这不一定是需要解决的问题,但是避免暂停状态的一种方法是将文件分发到多个域名和/或服务器上,记住如果适用于您的需要,那么HTTP2可能是一个更好的选择。资源绑定(如JS和CSS连接)也有助于减少暂停连接的数量


或者您可以取消请求优先级,然后在最后触发需要很长时间的请求,这样其余的请求就不会等待速度较慢的运行者。

我也遇到过类似的问题,每个代理请求都需要5秒或更长的时间,设置如下:

"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://my-backend-server.local:1234",
      "secure": false
    }
  ]
"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://[::1]:1234",
      "secure": false
    }
  ]
127.0.0.1    my-backend-server.local some-other-hostname.local a-few-more-of-these.local
::1          my-backend-server.local some-other-hostname.local a-few-more-of-these.local

在主机文件中:

127.0.0.1    my-backend-server.local
127.0.0.1    some-other-hostname.local
127.0.0.1    a-few-more-of-these.local
当我将代理更改为指向IPv6环回地址时,问题就消失了。所以像这样:

"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://my-backend-server.local:1234",
      "secure": false
    }
  ]
"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://[::1]:1234",
      "secure": false
    }
  ]
127.0.0.1    my-backend-server.local some-other-hostname.local a-few-more-of-these.local
::1          my-backend-server.local some-other-hostname.local a-few-more-of-these.local

为了能够在代理配置中使用实际主机名而不是环回地址,我编辑了主机文件,将所有主机名条目包含在一行中,并将它们指向IPv4和IPv6环回地址。所以像这样:

"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://my-backend-server.local:1234",
      "secure": false
    }
  ]
"proxy": [
    {
      "context": [
        "/api",
      ],
      "target": "http://[::1]:1234",
      "secure": false
    }
  ]
127.0.0.1    my-backend-server.local some-other-hostname.local a-few-more-of-these.local
::1          my-backend-server.local some-other-hostname.local a-few-more-of-these.local


现在延迟消失了,并按预期工作。

您是否以某种方式解决了问题?我有类似的问题你有没有在你的DNS上进行配置?它需要一些时间,然后又能有效地工作可能与这个问题有关:(虽然我不确定为什么赏金会是一个如此古老的问题,因为我怀疑OP会回答任何关于他们问题的问题)图表是一个过滤过的网络活动列表吗?如果是这样的话,它看起来与标准队列一致,可以从一个单一来源获得6个以上的连接。你能附上屏幕截图,悬停在你在上面屏幕截图中标记的瀑布图上吗?这个问题是今天(最初发布后约4年)为我出现的,这个
::1
的解决方案不知何故对我有效。