5

我只是在 PHP 图表库和 JavaScript 图表库之间做出选择时有点卡住了。我确实了解服务器端的 PHP 和客户端的 Javascript。我的问题是使用他们的图表库时有什么不同。是性能问题还是什么?

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

我试图用谷歌搜索“php 图表与 javascript 图表”,但没有得到任何可以给我带来差异的链接。

编辑 1

1)

如果之前已经回答过这个问题,那么请指出我。

2)

正在开发互联网应用程序

编辑 2

1)

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

非常感谢

4

5 回答 5

5

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

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

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

另一个缺点是图像占用的带宽比 JSON 多。您希望图表越大,它包含的颜色越多,您的客户等待页面加载的时间就越长。仅仅因为这些加载不是异步的,他们将不得不等待图像加载后才能看到页面的其余部分。

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

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

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

于 2012-05-08T17:17:43.757 回答
1

这是我看到的:

使用 PHP

  • 增加请求的服务器负载
  • 将在任何地方工作
  • 另外,就像有人在这里说的让我想到的那样,您可以缓存 PHP 给您的图像,减少带宽(没有要下载的库)并减少负载(缓存)

使用 Javascript

  • 减少负载但增加带宽和添加http请求(加载JS库)
  • 可以在 JS 可用的地方工作

但请记住,PHP 比 HTTP 请求承担更多负载。

另外,请永远记住,Javascript 是为您需要显示的效果和特殊内容而设计的。

于 2012-05-08T16:08:43.430 回答
1

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

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

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

于 2012-05-08T16:11:33.817 回答
0

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

于 2013-09-08T10:03:26.627 回答
-2

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

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

希望有帮助:)

于 2012-05-08T16:07:35.380 回答