【问题标题】:PHP chart Libraries VS JavaScript Chart LibrariesPHP 图表库 VS JavaScript 图表库
【发布时间】:2012-05-17 03:33:58
【问题描述】:

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

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

我尝试用谷歌搜索“php 图表与 javascript 图表”,但没有找到任何可以给我的链接 区别。

编辑 1

1)

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

2)

正在开发互联网应用程序

编辑 2

1)

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

非常感谢

【问题讨论】:

  • 您能否更新您的问题以包括您是为 Intranet 还是 Internet 进行开发?如果客户是众所周知的,你可以对 Intranet 做一些假设
  • 你知道 Highcharts.js 或 Google Charts API 吗?
  • :-) 我刚刚读到一些关于 Highcharts 的文章。我不想要 Google Charts API,因为需要将客户数据发送到 Google(客户可能对此感到不舒服),而且我希望库是本地的。
  • 这是我的看法。根据我的经验,如果您是一名 PHP 程序员,但在 JavaScript 方面不那么强,PHPChart.net 会为您带来极大的优势,因为使用 PHPChart 您实际上是在创建客户端 JavaScript 图表,但仅限于 PHP。它可以节省一天的时间,让您的 HTML5 图表和图形快速完成,而不必担心底层 JavaScript 对许多新手来说学习曲线是出了名的痛苦。我认为它很棒。

标签: php javascript


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的精彩回答。非常喜欢
    • 请记住,即使缓存图像很小,加载缓存图像也可能比执行代码生成 JSON 或 XML 更快。它将需要数据库访问和处理,因此严格来说加载页面的时间不能仅定义为发送到浏览器的字节数
    • @Brad 我同意。忘记缓存图像了。这并不像听起来那么容易,因为某些浏览器可能会忽略标头并再次请求资源或根本不请求它。快速搜索让我想到了这个问题:stackoverflow.com/questions/865484/…。我知道它已经过时了,但即使是现在你也永远不知道那些浏览器开发人员在做什么。特别是如果它是关于 Firefox 的 :)
    【解决方案3】:

    这是我看到的:

    使用 PHP

    • 为请求增加服务器负载
    • 适用于任何地方
    • 另外,就像这里有人说让我想到的那样,您可以缓存 PHP 给您的图像,减少带宽(无需下载 lib)并减少负载(缓存)

    使用 Javascript

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

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

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

    【讨论】:

    • @hamczu 一个由 PHP 生成的 PNG 图像可能是 15-20kB,一个好的 JS 库甚至可以压缩超过 80kB...
    • 除了第一次点击页面时缓存js。然而,图表不太可能全部被缓存。更不用说对于几个图表,您只需要一次库。不适用于图片。
    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

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

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

      希望对你有帮助:)

      【讨论】:

        猜你喜欢
        • 2010-09-12
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 2011-03-20
        • 2016-07-30
        相关资源
        最近更新 更多