使用AJAX调用减少服务器CPU使用率

时间:2012-11-15 20:30:08

标签: jquery ajax performance server-load

我正在开发一款多人HTML5游戏,该游戏利用jQuery轮询服务器的游戏状态。目前,我每隔2000ms用一个.ajax调用查询服务器,给人一种实时更新的印象。我真的不是在推动过多的数据...主要只是x / y位置和一些角色属性......在我的游戏实例中只有少数玩家活着。

服务器本身是一个共享托管服务器,我想在我开发这个游戏时尝试让我的CPU命中率尽可能低(并将其转移到更高功率的东西)。

这是我当前轮询服务器数据的方法。欢迎任何和所有建议,因为服务器加载对我来说是一个新的领域。

$.ajax({
  type:'GET',
  url:"controller.php?a=player-info",
  dataType:'json',
  success: function(data){
    //parse data
  }
});
....
setInterval(getPlayerInfo,2000);

我应该提到的一件事是,由于这是在共享服务器上,我不能有自由运行的进程来打开连接(即Node.js)。

2 个答案:

答案 0 :(得分:3)

首先,你说你没有推得太多的数据。对我来说,你在拉。这与您可能知道的不完全相同。

您可以使用Websockets,长轮询或服务器发送的事件。 (Read this article

答案 1 :(得分:1)

从你到目前为止所说的,目前尚不清楚CPU是否会成为你的瓶颈,但这里有一些建议可能会帮助你节省服务器资源。

考虑使用WebSockets而不是AJAX轮询。通过转向更加面向推送的架构,这可以消除大量服务无意义“无变化”请求的开销。

您可能还想使用memcached或其他一些基于RAM的数据存储层(例如Redis)来避免数据库瓶颈。