扩展Drupal

时间:2009-02-21 16:02:53

标签: php mysql performance drupal

我正在开发一个基于Drupal的网站,并注意到有很多单独的CSS和js文件。虽然涉及到一些代码,但我也可以看到很多使用过许多查询的情况。

您尝试使用哪些技术来提高Drupal的性能以及您使用哪些模块(如果有)来提高Drupal的“开箱即用”性能?

5 个答案:

答案 0 :(得分:22)

转到admin / settings / performance页面,打开CSS和JS聚合,以及最短1分钟的页面缓存,可以立即提升高流量网站的速度。如果您正在编写自己的代码并进行任何查询,请考虑编写自己的离散caching for expensive functions。链接的文章涵盖了Drupal 5,而不是6,但d6中唯一的变化是序列化要求的消除以及cache_set()和cache_get()函数的函数签名。 (两者都在对该文章的评论中指出)

在大型站点上还考虑将memcached服务器放到网络上:使用memcached模块,您可以完全绕过drupal数据库以获取缓存数据。如果您有大量内容并且搜索是热点,您还可以考虑使用lucene / solr作为搜索索引器而不是drupal的内置搜索索引器。这对于内置索引器来说很不错,但它并不是为重负载而设计的(例如,每小时有数百或数千个新内容,需要进行大量的分段搜索)。 apache solr模块可以配合使用。

如果您正在大量使用视图,请确保已检查为未编制索引的字段生成的查询;特别是CCK字段的排序和过滤可能很慢,因为CCK不会自动添加主键之外的索引。在D6中,在管理界面预览视图,复制查询文本,然后通过mysql中的EXPLAIN或任何查询分析工具运行它。

YSlow和Firebug等工具也可以帮助您发现大量图像文件,托管在远程服务器上的JS等慢速内容。

答案 1 :(得分:5)

Drupal 6,开箱即用,提供css和javascript聚合---大多数css和js文件将合并为一个文件(因而是单个HTTP请求),并且还缩短了空白(减少带宽消耗)。您可以在/ admin / settings / performance下启用它。

此屏幕上还有Drupal(非常有效)缓存的控件,这有助于减少数据库查询的数量。

此外,由于Drupal(以及您可能已安装的所有模块)都有大量的PHP源代码,因此使用APC等PHP操作码缓存有助于显着缩短请求时间。

答案 2 :(得分:0)

我强烈推断Benedict对Boost模块的推荐 - 如果配置正确,它将使您的网站在共享主机上飞行,并且根本不是真正的错误。

启用CSS / JS聚合,启用Boost,您的网站可以为匿名用户提供良好的效果。

如果您的网站主要处理登录用户,那么您将需要做更多工作以确保会话缓存良好,并且可能考虑使用memcached和更多SQL查询缓存。

最大的性能提升总是来自缓存 - 但监控和调整慢速查询,监控和调整apache和PHP配置,以及熟悉所使用的模块也是非常重要的。

答案 3 :(得分:0)

除了drupal默认缓存之外,还有另一种方法可以提高性能

Boost模块是最好的之一。 memcache,Varnish(Drupal 7 / Pressflow),CDN是另一种可以提高性能的方法

答案 4 :(得分:0)

还值得一提的是使用优质SSD存储带来的性能提升。迁移到SSD时,它一直将我的初始响应加载时间缩短了30%或更多(我在上一个项目中使用相同的Apache / Memcache / Cloudfront EC2配置从约450ms到约250ms),更不用说有多好了它是管理一个快速的服务器,你扔在它的每个命令或脚本几乎是瞬间的。我永远不会回去。