通过 AJAX 调用降低服务器 CPU 使用率



我正在开发一款多人HTML5游戏,它利用jQuery轮询服务器以获取游戏状态。 目前,我每 2000 毫秒使用一次 .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)。

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

您可以使用 Websockets、长轮询或服务器发送的事件。(阅读这篇文章)

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

请考虑使用 WebSocket 而不是 AJAX 轮询。 通过转向更面向推送的架构,这可以消除为毫无意义的"没有任何变化"请求提供服务的大量开销。

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

最新更新