在Codeigniter中使用页面或数据库缓存进行多个ajax调用

时间:2015-06-16 09:56:36

标签: php ajax codeigniter caching codeigniter-3

我正在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的“页面缓存”或“数据库兑现”来防止过多的数据库请求,实现这一点的最佳方法是什么?或者还有其他解决方案来阻止这种情况吗?

1 个答案:

答案 0 :(得分:1)

我认为这是一个非常棘手的问题,因为有很多可能性来解决这个问题

在我看来,最大的加速是使用键/值存储服务器作为"之间的"服务器(db - >键/值存储 - >输出) 我已经在几乎所有CI应用程序上安装了REDIS,因为它太快了

如果您可以访问您的服务器,我强烈建议您安装redis等服务。

例如,我快速浏览一下:

在具有16 GB Ram的I5-2500本地系统上,我可以在大约1秒内执行10.000个查询

尤其是在ajax构建设置中,您必须小心 - 因为您的请求不应超过100毫秒(大约!)

以下是一些用于制作图片的链接:

PHPredis on Github

Redis Documentation

如果您无法访问服务器,则应尝试使用基于文件的缓存。 有关详细信息,请查看here(有关缓存的CI文档)

相关问题