我对显示实时数据的速度和延迟表示怀疑。
假设我想通过每秒通过简单的集合查询从 MySql 表获取数据的 fire ajax 请求向用户显示读取时间数据。
为此,目前这两个选项正在我的脑海中冒泡
- MySql/Amazon Aurora
- 文件系统
在这些选项中,哪个会更好?还是其他解决方案?
正如我实际检查的那样,如果我们在浏览器中打开一个页面,那么 ajax 请求使用堆栈在不到 500ms
PHP, MySql, Nginx
给出响应。
但是,如果我们打开更多页面,那么相同的 ajax 请求会给出超过 1 second
个响应,对于每个访问者来说应该少于 500ms
。
因此,在这种情况下,如果访问者增加,则 ajax 请求给出的响应非常差。
我也检查了Node.js+MySql
但相同的结果。
为记录创建json
文件并从文件中获取数据是否好?还是其他解决方案?
事实上,您必须使用数据库来存储实际数据,但您可以轻松地添加内存缓存(可以是内部字典或单独的组件(来跟踪实际更新。
比典型的 ajax 请求如下所示:
-
Memcache,我们对用户 123 有什么新东西吗?
-
最后更新是 10 分钟前
-
啊哈,所以没什么新鲜事,让我们返回 null;
写入数据时:
-
将数据放入数据库
更新 内存缓存中客户端的上次更新时间
实际键可能不同 - 例如聊天室 ID。 想法是仅在实际发生更新时才读取数据库。
级别 2:
您将以大量呼叫烧毁您的网络服务器以及客户端互联网。你可以做点什么:
DateTime start = DateTime.Now;
while(Now.Subtract(30 seconds) < start)
{
if (hasUpdates) return updates;
sleep(100);
}
比客户端每 30 秒调用服务器 1 次。当服务器注意到新数据时,客户端将立即得到响应。