PHP图表库VS JavaScript图表库

时间:2012-05-08 16:03:09

标签: php javascript

我只是在PHP图表Lib和JavaScript Chart Lib之间做了一些选择。我确实理解PHP如果用于服务器端而Javascript用于客户端。我的问题是它在使用图表库时会有什么不同。是性能问题还是什么?

我想了解使用PHP图表Libs和JavaScript Chart Libs的区别。请不要查看他们的图表库的示例。我正在寻找为什么我应该选择一个而不是另一个。

我试图谷歌' php图表与javascript图表'但没有得到任何可以给我的链接 差异。

编辑1

1)

如果之前已经回答过这个问题,那就指点我。

2)

正在开发互联网应用程序

编辑2

1)

我发现了PHPChart PHPChart ,其中包含PHP源代码和JavaScript源代码。如果有人有该库的经验,它是否可以解决服务器端负载(带宽问题)等问题。我在想,因为它既有PHP和JavaScript源,那么它可能是最好的使用。我只是假设。 : - )

非常感谢

5 个答案:

答案 0 :(得分:5)

创建图表的两种方式各有利弊。

如果您决定使用PHP,首先需要确保安装了所有必需的图形库(例如GD,这可能并不总是在共享主机上可用)。

假设你拥有它们,我认为第一个负面因素是你最终会得到静态图像。当然,这并不总是坏事,因为这确保了与所有客户端的兼容性,无论是否支持javascript,但是,它会消除使用javascript在客户端生成的图形的动态。您的用户将无法使用Highcharts或Flot等缩放,移动,滑动,全屏或执行任何操作。

另一个问题是,图像比JSON占用的带宽更多。您希望拥有更大的图表,它包含的颜色越多,客户端等待页面加载的时间就越长。只是因为这些负载不是异步的,他们必须等待图像加载才能看到页面的其余部分。

使用javscript库时,一切都不尽相同。您只需要请求图表所需的数据,并且只在页面加载时请求它。数据量通常小于图像数量加上您可以使用GZ压缩输出以使其更小。用户会看到很好的微调器通知他们图表正在加载而不是一些不完整的网页。

要考虑的另一件事是 - 如果您决定在每个图表下方显示包含数据的漂亮表格,该怎么办?如果您选择在服务器上呈现图像,则最终必须添加新功能才能获取数据。但是,使用JSON,您只需进行一次调用,渲染图形并显示表格。也许计算总数或做任何你想做的事情。如果你愿意,可以把它作为API传递给人们:)

如果你问我,我肯定会使用客户端图表,因为现在大多数设备都有很好的HTML5支持,并且能够在Android手机上显示图形,或者iPhone或iPad不能构成图形问题。如果您只需要图像并且不希望公开原始数据,请使用PHP。

答案 1 :(得分:1)

这就是我所看到的:

使用PHP

  • 增加服务器上的请求负载
  • 无处不在
  • 此外,就像有人在这里说的让我想到它,你可以缓存PHP给你的图像,减少带宽(没有lib下载)和减少负载(缓存)

使用Javascript

  • 降低负载但增加bandwitch并添加http请求(加载JS lib)
  • 将在JS可用的地方工作

但请记住,PHP需要更多的负载,然后是HTTP请求。

此外,始终记住,Javascript是针对您需要显示的效果和特殊内容制作的。

答案 2 :(得分:1)

我的观点是,拥有服务器端解决方案(即php)会消除您在客户端解决方案(即javascript)中可能遇到的任何浏览器兼容性问题,从而支持问题。

使用JS的一个好处是它可以将资源从服务器卸载到客户端,因为您可能只需要生成一些轻量级数据(例如JSON,XML),并且在客户端上进行渲染。您将不得不调查服务器可能获得的命中数等,以确定资源是否与PHP或JS一起使用。

然而,使用Php创建图表的图像,您可以通过使用图像文件的缓存并从缓存(它只是图像的文件夹)提供服务而不是生成新的图像来解决性能/资源问题。 。您是否使用缓存取决于您的使用情况。如果客户端需要最多第二个数据并且它总是在变化,显然缓存可能没用。

答案 3 :(得分:0)

有一个PHP呈现优势,没有人告诉过。因为有时您需要将图表作为图像包含到PDF,DOC,XLS等文件中或通过电子邮件发送 - 除了在服务器上呈现图表并将其存储为要插入的图像之外,您没有其他办法。

答案 4 :(得分:-2)

对于数据操作,您使用 PHP
对于视觉和行为效果,您可以使用 JavaScript

出于这个原因, 你应该使用Javascript 作为视觉行为的设计。此外,它将减少您服务器的负担,因为所有处理都将是客户端。随着越来越多的人同时使用您的应用程序,它将开始变慢,因为您的服务器将会做更多的工作。

希望有帮助:)