【问题标题】:Is Joomla just slow, or can I speed it up somehow?Joomla 只是慢,还是我可以以某种方式加快速度?
【发布时间】:2013-02-27 22:33:24
【问题描述】:

我已经在 Google 上搜索了这个问题很长一段时间,但我找不到一篇文章讨论 Joomla 的速度,而不是脚本和图像等外部资源的加载速度。我的 Apache + PHP 设置执行得非常好 - 启用了压缩并且我正在使用本地虚拟机来运行它。问题出在服务器端的Joomla,我不知道如何追踪它的来源。

我本地 Joomla 设置上的页面总是需要 2 到 3 秒才能加载。根据 Chrome 开发者工具中的 Network 标签,浏览器等待 HTML 页面大约 2 秒,然后在大约 0.3 秒内加载所有外部资源。 每个页面都是这种情况,甚至是管理员页面。这导致非常令人沮丧的页面浏览,因为每次链接点击都会等待很长时间。为了说明,这里是加载速度图的屏幕截图。蓝线是 HTML 页面:

每个请求需要 2 秒处理时间的 Joomla 是怎么回事? Joomla 就是这么慢,还是我的设置有问题?如果是这样,我该如何调试它?


我尝试过的

  • 我创建了一个完全独立于 Joomla 设置的 PHP 页面,并用<?php phpinfo(); ?> 填充它,以确认所有 PHP 脚本不受 2 秒延迟的影响。他们不是。
  • 我编写并执行了一个小的 PHP 脚本,它通过“127.0.0.1”和“localhost”连接到本地 MySQL 服务器,并打印出 Joomla 数据库中的所有表。该脚本只需几分之一秒即可运行,因此在连接到数据库时,故障不在于 DNS 问题。

用于加载首页的 Joomla 个人资料信息:

应用 0.000 秒 (+0.000); 0.81 MB (+0.807) - 加载后
应用 0.217 秒 (+0.217); 2.29 MB (+1.479) - 初始化后
应用 0.296 秒 (+0.079); 4.34 MB (+2.055) - afterRoute
应用 0.640 秒 (+0.345); 5.59 MB (+1.247) - 发货后
应用 0.705 秒 (+0.065); 5.85 MB (+0.266) - beforeRenderModule mod_menu(主菜单)
应用 0.774 秒 (+0.069); 5.91 MB (+0.053) - afterRenderModule mod_menu(主菜单)
应用 0.774 秒 (+0.000); 5.90 MB (-0.009) - beforeRenderModule mod_menu(所有前端视图)
应用 1.004 秒 (+0.229); 6.05 MB (+0.147) - afterRenderModule mod_menu(所有前端视图)
应用 1.004 秒 (+0.000); 6.03 MB (-0.016) - beforeRenderModule mod_menu(用户菜单)
应用 1.035 秒 (+0.032); 6.05 MB (+0.021) - afterRenderModule mod_menu(用户菜单)
应用 1.036 秒 (+0.000); 6.04 MB (-0.010) - beforeRenderModule mod_menu(深度菜单)
应用 1.058 秒 (+0.023); 6.06 MB (+0.017) - afterRenderModule mod_menu(深度菜单)
应用 1.059 秒 (+0.000); 6.05 MB (-0.010) - beforeRenderModule mod_menu(本网站)
应用 1.092 秒 (+0.034); 6.06 MB (+0.014) - afterRenderModule mod_menu(本网站)
应用 1.092 秒 (+0.000); 6.05 MB (-0.013) - beforeRenderModule mod_login(登录表单)
应用 1.116 秒 (+0.024); 6.07 MB (+0.023) - afterRenderModule mod_login(登录表单)
应用 1.116 秒 (+0.000); 6.07 MB (-0.002) - beforeRenderModule mod_breadcrumbs (Breadcrumbs)
应用 1.143 秒 (+0.027); 6.09 MB (+0.021) - afterRenderModule mod_breadcrumbs (Breadcrumbs)
应用 1.143 秒 (+0.000); 6.09 MB (-0.003) - beforeRenderModule mod_menu(顶部)
应用 1.179 秒 (+0.035); 6.12 MB (+0.028) - afterRenderModule mod_menu(顶部)
应用 1.179 秒 (+0.000); 6.10 MB (-0.012) - beforeRenderModule mod_search (搜索)
应用 1.207 秒 (+0.028); 6.13 MB (+0.028) - afterRenderModule mod_search (搜索)
应用 1.236 秒 (+0.029); 6.15 MB (+0.014) - afterRender

请注意,“afterInitialise”、“afterDispatch”和“afterRenderModule mod_menu(所有前端视图)”步骤每个都需要将近三分之一秒。这些点中的每一个运行的时间都比我接受整个脚本运行的时间要长。关于如何减少这些的任何线索?

我希望这个问题足够具体,不会立即关闭。如果我可以做些什么来使其更具体,请发表评论。

【问题讨论】:

  • 您是否安装了 PHP APC 或 eAccelerator 或其他一些 PHP 缓存引擎?
  • @BenD:我刚刚安装了 PHP APC (apt-get install php-apc),这有效地将等待时间从 2 秒减少到了大约 1.4 秒。有人会认为,显示一个简单的 Joomla 页面所涉及的少量处理只需要其中的十分之一,即使在一台非常慢的机器上也是如此。有什么指点吗?
  • 您可能还需要优化您的数据库表以确保。我本来预计 APC 安装会让您低于一秒钟,但可能是 Joomla 的开销太大了。您正在运行的服务器的统计数据是什么?
  • @BenD:这是一个 VMWare 虚拟机。如果相关的话,主机有一个 i7 3770k 处理器。我访问过多个已知的 Joomla 站点,其中很少有人偶尔会低于 1000 毫秒。我在同一台虚拟机上安装了 WordPress,页面的加载时间在 100 到 250 毫秒之间,所以我得出的结论是 Joomla 只是
  • 根据我的经验,已经建立了大约十几个 Joomla 站点,它非常慢。有很多大多数用户根本不需要的东西,您显然可以通过确保图像经过压缩/优化等来改进事情,在一个屏幕上不要有太多模块等。

标签: php performance joomla


【解决方案1】:

joomla 只是很慢(我希望为此被标记),但确实如此。我已经使用 APC、eAccelerator 和其他几个使用各种版本的 PHP 和 apache 进行了测试,甚至尝试使用 nginx,作为模块和 FastCGI。

看来joomla 现在只是臃肿了。就个人而言,如果您将它用于简单的 CMS 目的,我会为初学者推荐 wordpress,或者为更高级的用户推荐 drupal。

【讨论】:

  • 只有当你有旧的 PHP 和 MySQL 版本,以及一个包含数千篇文章和大量扩展的数据库时,Joomla 才会很慢。我开发了多个 Joomla 站点,所有站点都相当快
  • @Lodder:定义“相当快”。我的快速速度测试是在虚拟 Debian 机器上安装干净的 Joomla 3.0,使用 PHP 5.3 和 MySQL 14。几分钟前我刚刚安装了 Wordpress 进行比较,默认页面加载时间约为 200 毫秒,而 Joomla 需要每页 1300 毫秒和 2100 毫秒,大概取决于缓存状态。 (我只是说主HTML文件的等待时间,不包括任何外部资源。)
  • 我并不是说 Joomla 比 WP 快,因为我不知道,但是,您必须记住,Joomla 和 WP 的用途不同。 WP 用于写博客,由于可用的编码功能和扩展的数量,Joomla 更加灵活。我的站点在运行 PHP 5.3、MySQL 5.1.66 的共享服务器上,使用大量扩展和基于框架的模板。即使那样,它仍然在大约 2 秒内加载,我认为这非常好。你看看一些基于 WP 的网站有很多内容,比如css-tricks.com,速度测试结果在 4 秒多一点就出来了。
  • @Lodder,我同意。我开发了多个 Joomla 网站,发现速度非常好。我有一个复杂的电子商务网站,可以在 1.5 秒内加载一个完整的页面。我发现让 Joomla 变慢的唯一事情是:我非常难过的小型 localhost 笔记本电脑;我自己草率的编码。在具有良好编码的>适当
  • @JustPlainHigh,不是想在这里冒犯他人,而是……说真的,您认为 1.5 秒是加载页面的合理时间吗? 0.5 秒是合理的时间......不是 1.5
【解决方案2】:

在系统选项中启用不同级别的缓存时,我得到了更好的结果。如果你不使用缓存,它会很慢。

【讨论】:

  • “缓存级别”是什么意思?你能指出任何具体的PHP APC directives 或 Joomla 设置吗?
  • 我的意思是在 joomla 控制面板中。我有一个禁用缓存的站点,该页面将在几秒钟内加载。启用缓存后,加载时间会大大减少。
  • 感谢您的评论。不幸的是,没有一个缓存选项有太大的不同。选项的最佳组合是“保守缓存”和“文件”处理程序,它最多将页面的加载速度从 1.4 秒降低到 1.1(平均)秒。在加载速度低于 0.2 秒之前我不会满足。
  • 有时,如果你在 joomla 中有一个加载外部内容的模块(例如 RSS 提要,甚至像 jquery 或 Google API 字体等库),joomla 首先会预加载所有内容,然后继续运行。我不认为你会达到那么快的结果,因为这取决于不同外部网站的各种延迟时间。
  • 首先您是在谈论单个文章页面还是类别页面或什么?如果您发现一篇文章需要 2 秒,并且您没有安装额外的系统插件并且只使用核心模块,我会非常有兴趣查看您的网站。总体而言,J3 站点中最常见的页面加载缓慢的来源是: 1.Buggy 系统插件 --- 确保您在 max 上有错误报告,以测试您是否遇到严格错误。 2. 损坏的资产表通常是由拙劣的迁移引起的,然后 3. 旧的 mysql 但我不知道你所说的 mysql 14 是什么意思
【解决方案3】:

这可能取决于您的虚拟主机...在共享资源方面,亚马逊 AWS 是一场噩梦。在小型甚至中型实例上,您的 CPU 资源是共享的,我通常会获得 50% 的资源“被盗”... %st ...这使得服务器负载很高,因此页面非常慢。您可以忘记微型实例...您的服务器负载恒定为 90% +

我们计划在年底迁移网络主机。希望我们能解决这个问题。

【讨论】:

  • 注意我说的是“本地虚拟机”。不涉及虚拟主机。
【解决方案4】:

在本地主机(Windows)上运行 joomla 2.5,我在管理员任务上经历了长达 8 秒的时间。最后我不得不禁用一些 php 扩展来提高性能。 前任。 php_pdo_oci.dll , php_pdo_mysql.dll 等 尽量只使用必要的。

【讨论】:

    【解决方案5】:

    是的,与 wordpress 相比,Joomla 需要更多时间来处理生成的 html。为什么?因为它为您提供了一个强大的框架,让您的网站不仅仅是一个博客。

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      相关资源
      最近更新 更多