我正在设计一个服务器,它向Web客户端以及移动客户端提供数据/信息(第2阶段)。数据将填充图表;成像绘制每天超过5年的股票价格(显示最小/最高/平均)。
1]如果我向客户端发送3000个数据点,则需要发送一小段数据,然后进行绘图。相反,如果我在服务器上构建图形,我可以将PNG发送给客户端。哪个更好?
2]绘制5年以上的每一点是不好的做法?有没有办法让MySQL一次平均5个数据点(天)并返回呢?
仍处于设计阶段,但我意识到这一决定将真正影响应用程序的性能。
答案 0 :(得分:0)
您能估算一下您要发送的数据量吗? 3000个数据点可以是12K(每float
个4字节)和100K(时间戳+文本格式的值)之间的任何值。虽然12K不算什么,但100K非常重要,特别是对于移动设备而言。
处理时间也很重要。与在画布上生成图表相比,使用某种低级语言在服务器上生成数据并返回PNG将更加高效。
但你应该考虑解决你的图表问题。如果要绘制3000点,则需要水平至少3000像素。这些天最大屏幕达到2560 pixels width,这意味着您永远无法显示所有数据,您必须隐藏一些点。移动设备上的情况要糟糕得多。争取200-300像素宽度,至少少两倍的数据点。
话虽如此,我建议采用以下方法:
计算平均值并向浏览器返回不超过100-200个数据点(平均值必须是智能的,这样您就不会失去一些有趣的极端值)。
使用浏览器上的数十个JavaScript图表库之一
一旦您需要更详细的信息,用户可以放大图表,这将要求服务器提供更高分辨率的数据。