并行ajax请求或SQL查询? [表现方面]

时间:2016-01-22 19:46:16

标签: javascript jquery ajax postgresql

我正在设计和实施物业管理系统,我有一个仪表板,其中包含指定日期间隔的房间预订。

我在问什么,与性能[装载室信息]有关。 目前,我有

for (var r = 0; r < rooms.length; r++)
    {
        $.ajax({
        type: 'POST',
        url: '/dashboard/getAllOrders.php',
        data: 'room_id=' + encodeURIComponent(rooms[r].id),
        complete: function (e, xhr, settings) {
            if (e.status === 200)
            {
                var orders = $.parseJSON(e.responseText);
                for (var i = 0; i < orders.length; i++)
                {
                    drawOrder(orders[i]);
                }
            }
        }
        });
    }  

但是,我也可以把它写成:

var room_ids = [];
    for (var r = 0; r < rooms.length; r++)
    {
        room_ids.push(rooms[r].id);
    }

    $.ajax({
    type: 'POST',
    url: '/dashboard/getAllRoomsOrders.php',
    data: { 'room_ids' : room_ids },
    complete: function(event, request, settings)
    {
        if (event.status === 200)
        {

            var orders = $.parseJSON(event.responseText);
            for (var i = 0; i < orders.length; i++)
            {
                drawOrder(orders[i]);
            }
        }
    }
    });

从性能的角度来看,你能否向我推荐我需要坚持使用哪个选项并提供一些参数来证明为什么一个选项比其他选项更好?

如果没有,您能否为客户端 - 服务器应用程序推荐最佳基准测试实践?

1 个答案:

答案 0 :(得分:0)

对于非常少量的数据,您可能会发现几乎没有区别,但是,随着roomId数量的增加,您开始看到第一种方法比第二种方法花费的时间更长,主要是由于带宽

通过将所有这些请求组合到一个请求中,您减少了客户端与Web服务器以及Web服务器和数据库服务器之间的网络流量,因为在两种情况下组合请求都不需要重复发送头数据和sql查询,而是发送一次,从而减少网络流量和数据库查找。