我在数据库中收到了大量数据。目标是以可读的方式将它们呈现给用户,并且由于它们是库存数据,因此需要有图表。
现在它提出了一个问题:哪种方法会更好,在服务器端动态创建图形或让服务器只是推送原始数据,允许客户端生成图形?我看到有一些jQuery库用于执行此操作,例如flot。
我通常喜欢在客户端尽可能少地做,但这次我想知道:在客户端生成图表会产生较低的服务器负载。
此外,更改某些参数(如显示位差异时间跨度的数据)只需要使用ajax和重绘图从服务器获取丢失的数据,而不是获取完全不同的图像。这将提供更具响应性的UI。
我看到Google Finance使用flash作为他们的图表,但如果可能的话,我想避免使用...
答案 0 :(得分:3)
如何使用Google Chart API?
Google Chart API可让您动态生成图表。要查看Chart API的运行情况,请打开浏览器窗口并将以下URL复制到地址栏中:
https://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World
按Enter或Return键 - - presto! - 您应该看到以下图片:
![]()
此解决方案的优点:
此解决方案的缺点:
答案 1 :(得分:2)
客户端图表有几个问题:
如果以上所有内容都没有吓到你,那么客户端图表就很棒了,特别是它的互动性。
答案 2 :(得分:2)
客户端为用户提供了更多机会。在这方面,在服务器上生成位图是非常蹩脚的,如你所提到的和,它会增加你的服务器负载。
在那种情况下,我会选择收银机。浏览器支持非常好,它不会浪费客户端资源,您可以轻松地为用户提供一些额外的功能,如放大或激活和停用部分数据。当然,flot图也看起来很不错。
答案 3 :(得分:1)
拥有极其CPU重的JS库实际上可以阻碍用户体验(就像让我的FireFox 3.5冻结1分钟一样,而雅虎邮件的最新代码和最棒的代码做了我从未想过或不需要的东西它要做)。因此,如果您能够负担得起服务器端资源,请在服务器上执行此操作。
但是,请确保使用相同的输入数据缓存图形图像 - 它可能会在可接受和DOA服务器利用率之间产生差异。
至少,允许用户使用“精简”选项 - ala Yahoo Finance允许您切换到简单的非Flash图表或具有精简HTML界面的Google地图。
答案 4 :(得分:1)
如果用户正在自定义图表中显示的数据,我可能会考虑在客户端绘制图表。如果图表与多个用户相关,我肯定会在服务器端生成一次并为每个人缓存它。
答案 5 :(得分:1)
还取决于用户查看图表的重要程度,以及他们是否处于受控环境中。如果您无法确定它们是否启用了javascript,请更好地生成图形服务器端。
答案 6 :(得分:0)
我可能只是找到一个可以使用您选择的开发语言的图表库并使用它 - 除非您有一个强大的理由来编写自己的图表系统。
如果您使用Asp.Net,那么new charting control可能是一个安全的赌注 - 它会生成图表服务器(作为图像)