我的网站如何制作许多并发HTTP请求?

时间:2016-06-29 00:02:39

标签: javascript ajax node.js http web

我有一个站点,可以从远程服务器加载许多单独的数据 - 也就是说,一个与我的网络服务器分开的公共API服务器。该站点在加载时进行了17次Ajax调用,超出了browser limits,因此使用直接Ajax调用会导致更严重的性能问题。

这些Ajax调用中的一些需要很长时间 - 三个最长时间分别需要28秒,20秒和19秒 - 大多数需要4-8秒,少数需要不到一秒钟。

该站点当前将许多这些Ajax请求批处理为PHP脚本,该脚本充当中间人:客户端向服务器发送URL列表,Web服务器(没有此类并发HTTP请求限制)发出请求代表客户端,网络服务器将API服务器的响应转发给客户端。

//sent by browser to webserver
{
    "events_data": {
        "url": api_url + "/events/properties/events_data",
        "requestType": "GET",
        "headers": {},
        "parameters": {}
    },
    "transactions": {
        //...
    },
    //...
}

//returned by webserver to browser after all requests resolve
{
    "events_data": {
        "response": [
            { /* ... */ },
            { /* ... */ },
            // ...
        ],
        "status": {
            "http_code": 200,
            "content_type": "application/json; version=0.1",
            //...
        },
        "responseHeaders": {
            "Content-Length": 12345,
            "Connection": "keep-alive",
            //...
        }
    },
    "transactions": {
        //...
    },
    //...
}

我对此解决方法的一个重大问题是,客户端必须等待Web服务器接收批处理中的每个HTTP响应,然后才能看到任何数据。我知道我可以通过使用像Socket.io这样的东西解决这个问题,但这看起来有些过分。

如果这是一个常见问题,有什么解决方案可以解决它?

如果不是,那么严重依赖API数据的网站如何避免或缓解此问题呢?

0 个答案:

没有答案