2009-02-21 41 views
15

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

你尝试过什么技术来提高Drupal和哪些模块(如果有的话)的性能,你用它来改善Drupal的“开箱即用”的表现?

回答

21

要去管理/设置/性能页,打开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

我还会补充一点关于如何设置块缓存 - 它允许你缓存甚至注册用户的内容,因为页面缓存只影响匿名的内容。 – 2009-02-23 20:10:54

5

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

此外,在该屏幕上是Drupal(非常有效)缓存的控件,这有助于减少数据库查询的数量。另外,因为Drupal(以及您可能已经安装的所有模块)都有大量的PHP源代码,所以使用PHP操作码缓存(例如APC)有助于显着减少请求时间。

0

我强烈第二增强模块的本笃十六世的建议 - 唯有它会让你的网站飞共享主机,如果配置正确,而不是真正的越野车在所有。

打开CSS/JS聚合,打开Boost,您的网站可以很好地为匿名用户执行。

如果您的网站大多是登录用户的交易,你将不得不做大量的工作,确保会议被缓存很好,而且很可能考虑使用Memcached和更多的SQL查询缓存。

最大的性能提升总是来自缓存,但是监测和调整你的慢查询,监控和调整Apache和PHP配置,聪明你使用的模块都非常重要。

+0

我正在使用我网站上的Drupal性能白皮书 - 只是提供了一个良好的想法,可以提高整个网站的性能:http://www.lifeisaprayer.com/articles/web-design/2010/Drupal的性能 - 白 - 纸 – geerlingguy 2011-02-07 16:05:15

0

除了Drupal的默认缓存,也有一些以提高性能

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

0

还值得一提的是使用高质量SSD存储的性能提升。在迁移到SSD时,我的初始响应加载时间一直减少了30%以上(我使用相同的Apache/Memcache/Cloudfront EC2配置,我的最后一个项目的时间从大约450ms减少到了〜250ms),更不用说多少更好了它是管理一个活泼的服务器,其中每个命令或脚本你几乎是瞬间的。我永远不会回去。