我正在Codeigniter 3中构建应用程序/游戏。在教室前面的投影仪上运行一个应用程序,其他用户可以通过移动设备进行游戏。应用程序需要将json发送给玩家。它必须在没有Pusher或socket.io等任何服务的情况下完成,因为我无法在服务器上安装任何东西,并且没有外部服务的预算。
所以我在用户上运行了一些Javascript:
setInterval(function(){
$.getJSON( "ajax/data/json", { 'id': id }, function( data ){
// Do stuff with the data if its available
});
}, 1000);
在应用程序上我有这样的东西:
public function json()
{
$this->load->model('data_model');
$data = $this->data_model->get_json($this->input->get('id'));
echo json_encode($data);
}
我唯一的担心是游戏同时在很多地方播放。 我可以使用Codeigniters的“页面缓存”或“数据库兑现”来防止过多的数据库请求,实现这一点的最佳方法是什么?或者还有其他解决方案来阻止这种情况吗?
答案 0 :(得分:1)
我认为这是一个非常棘手的问题,因为有很多可能性来解决这个问题
在我看来,最大的加速是使用键/值存储服务器作为"之间的"服务器(db - >键/值存储 - >输出) 我已经在几乎所有CI应用程序上安装了REDIS,因为它太快了
如果您可以访问您的服务器,我强烈建议您安装redis等服务。
例如,我快速浏览一下:
在具有16 GB Ram的I5-2500本地系统上,我可以在大约1秒内执行10.000个查询
尤其是在ajax构建设置中,您必须小心 - 因为您的请求不应超过100毫秒(大约!)
以下是一些用于制作图片的链接:
如果您无法访问服务器,则应尝试使用基于文件的缓存。 有关详细信息,请查看here(有关缓存的CI文档)