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


Using page or database cache for multiple ajax calls in Codeigniter

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

我认为

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

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

如果你可以访问你的服务器,我强烈建议你安装像 Redis 这样的服务。

例如,我快速浏览了一下:

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

特别是在ajax构建设置中,您必须小心 - 因为您的请求不应超过100ms(大约!

这里有一些链接可以制作图片:

Github 上的 PHPredis

瑞迪斯文档

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