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