在 Codeigniter 中对多个 ajax 调用使用页面或数据库缓存
Using page or database cache for multiple ajax calls in Codeigniter
我正在 Codeigniter 3 中构建一个 application/game。教室前面的投影机上有一个应用程序 运行,其他用户可以通过那里的移动设备玩。应用程序需要发送 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 'Page Caching' 或 'Database Cashing' 来防止过多的数据库请求吗?实现它的最佳方法是什么?或者有没有其他解决方案来防止这种情况?
我认为这是一个非常棘手的问题,因为有很多可能性可以解决这个问题
在我看来,最大的加速是使用键/值存储服务器作为 "between" 服务器(数据库 -> 键/值存储 -> 输出)
我已经在几乎所有 CI 应用程序上安装了 REDIS,因为它非常快
如果您可以访问您的服务器,我强烈建议您安装像 redis 这样的服务。
例如我快速浏览了一下:
在具有 16 GB Ram 的 I5-2500 本地系统上,我可以在大约 1 秒内执行 10.000 个查询
尤其是在 ajax 构建设置中,您必须小心 - 因为您的请求不应超过 100 毫秒(大约!)
这里有几个链接可以用来制作图片:
如果您无权访问您的服务器,您应该尝试使用基于文件的缓存。
有关更多信息,请查看 here(CI 关于缓存的文档)
我正在 Codeigniter 3 中构建一个 application/game。教室前面的投影机上有一个应用程序 运行,其他用户可以通过那里的移动设备玩。应用程序需要发送 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 'Page Caching' 或 'Database Cashing' 来防止过多的数据库请求吗?实现它的最佳方法是什么?或者有没有其他解决方案来防止这种情况?
我认为这是一个非常棘手的问题,因为有很多可能性可以解决这个问题
在我看来,最大的加速是使用键/值存储服务器作为 "between" 服务器(数据库 -> 键/值存储 -> 输出) 我已经在几乎所有 CI 应用程序上安装了 REDIS,因为它非常快
如果您可以访问您的服务器,我强烈建议您安装像 redis 这样的服务。
例如我快速浏览了一下:
在具有 16 GB Ram 的 I5-2500 本地系统上,我可以在大约 1 秒内执行 10.000 个查询
尤其是在 ajax 构建设置中,您必须小心 - 因为您的请求不应超过 100 毫秒(大约!)
这里有几个链接可以用来制作图片:
如果您无权访问您的服务器,您应该尝试使用基于文件的缓存。 有关更多信息,请查看 here(CI 关于缓存的文档)