1

我对 Drupal 几乎一无所知,但我确实有一个问题。我们有一个网站,直接用 HTML 和 PHP 编写,在 1-2 秒内加载主页并向服务器发出 25 个请求以获取所需的数据。该站点的新 Drupal 版本需要 5-6 秒来加载主页,这并不比旧页面复杂,并向服务器发出 127 个请求(我正在看 Firebug NET)以获取所需的数据。

这是典型的吗?

谢谢。

4

3 回答 3

4

是的,对于 Drupal 或大多数大型 PHP 应用程序框架来说,性能提升 3 倍是很自然的。引导 Drupal 是一项代价高昂的操作,因为它需要加载大量文件。众所周知,Drupal 会执行过多的数据库查询以生成单个页面。

第一步是启用页面缓存和 JS/CSS 聚合。这可以在管理 >> 配置 >> 性能(在 Drupal 7 中)的管理页面中完成。

但是,在轻量级 PHP 站点上 1-2 秒的加载时间是主机过载或调整不当的标志。您应该确保您的站点在最新的 PHP 版本中运行(每个版本的 PHP 都变得越来越快)。还启用APC(或任何其他 opcache),即使使用默认设置也可以大大提高 Drupal 的性能。使用 APC,尝试增加共享内存大小(例如 php.ini 中的 apc.shm_size = 64)。

您还应该尝试分析您的网站以识别实际的瓶颈。随着 Drupal 每页发出多个请求,数据库很快成为瓶颈。Drupal 支持使用多个服务器进行读取查询。

关于数据库,Drupal 使用内部缓存,默认情况下存储在数据库中。所以这个缓存不能很好地处理过载的数据库。Drupal 的缓存是可插拔的。它可以配置为使用memcacheredismongodb进行存储。这可以大大减少数据库的负载。

于 2013-11-06T18:08:23.793 回答
2

是的,drupal 很慢。这就是为什么如果您的页面发出太多请求时我们使用缓存机制

  • 看看你是否可以聚合你的 CSS 和 JS(这将减少 HTML 调用的数量。你可以从管理员那里做到这一点)
  • 使用 CDN
  • 使用内存缓存或清漆缓存
  • 在 apache 中使用页面缓存。

注意:-请提供一些实际数据与一些负载测试工具分开

于 2013-11-06T09:57:29.747 回答
1

有多少请求被发送到服务器?它也很重要,但 drupal 有解决方案。Drupal 将所有 css 文件合并到一个文件中,以降低服务器调用,对于 js 文件也是如此。

但是速度对服务器端代码、数据库操作也很重要。Drupal 是一个强大的系统,它使复杂的事情变得简单(是的,让复杂的事情变得简单)并提供这样的功能,这样用户就可以在没有一行代码的情况下创建一个完整的门户。但是所有这些功能都是以性能为代价的。在内部,drupal 做了很多操作,这让它变慢了。

这些操作包括视图和块操作,视图/块/表单越复杂,操作就越多,因此需要更多的时间。

此外,如果网站内容增加,那么它会变得更慢。因为 drupal 将每个内容视为一个节点,并且对于您的所有内容类型(例如新闻、cms 页面、推荐等),数据都存储在单个节点表中(也使用了一些其他表,但您的主要内容是存储在节点表中)。所以当内容增加时,单个表的负载增加,导致数据库操作缓慢,因为你的表越大,操作时间就越长。

我可能错了,但 Drupal 很慢:P

于 2013-11-06T08:49:06.620 回答