0

我怀疑显示实时数据的速度和延迟。

假设我想通过每秒触发 ajax 请求向用户显示读取时间数据,这些请求通过简单的集合查询从 MySql 表中获取数据。

为此,目前这两个选项在我脑海中浮现

  1. MySql / 亚马逊极光
  2. 文件系统

在这些选项中,哪个更好?或者任何其他解决方案?

正如我实际检查的那样,如果我们在浏览器中打开一个页面,那么 ajax 请求会比500ms使用PHP, MySql, Nginx堆栈提供响应。

但是,如果我们打开更多页面,那么相同的 ajax 请求给出的响应1 second应该比500ms每个访问者的响应要少。

所以在这种情况下,如果访问者增加,那么 ajax 请求的响应就会很差。

我也检查了Node.js+MySql但结果相同。

为记录创建json文件并从文件中获取数据是否很好?或者任何其他解决方案?

4

1 回答 1

0

实际上,您必须使用数据库来存储实际数据,但您可以轻松添加内存缓存(可以是内部字典或单独的组件)来跟踪实际更新。

比您典型的 ajax 请求看起来像:

  1. Memcache,我们对用户 123 有什么新东西吗?

  2. 上次更新是 10 分钟前

  3. 啊哈,没什么新鲜的,让我们返回 null;

写入数据时:

  1. 将数据放入数据库

  2. 更新内存缓存中客户端的上次更新时间

实际密钥可能不同 - 例如聊天室 ID。想法是仅在实际发生更新时才读取数据库。

2级:

您将烧毁您的网络服务器以及具有大量呼叫的客户端互联网。你可以做一些事情:

DateTime start = DateTime.Now;
while(Now.Subtract(30 seconds) < start)
{
   if (hasUpdates) return updates;
   sleep(100);
}

比客户端每 30 秒调用服务器 1 次。当服务器注意到新数据时,客户端将立即得到响应。

于 2016-08-22T22:13:07.307 回答