我在一个基于 Drupal 的站点上工作,注意到有很多单独的 CSS 和 js 文件。通过一些代码,我还可以看到很多使用许多查询的情况。
您尝试过哪些技术来提高 Drupal 的性能,以及您使用哪些模块(如果有)来“开箱即用”地提高 Drupal 的性能?
我在一个基于 Drupal 的站点上工作,注意到有很多单独的 CSS 和 js 文件。通过一些代码,我还可以看到很多使用许多查询的情况。
您尝试过哪些技术来提高 Drupal 的性能,以及您使用哪些模块(如果有)来“开箱即用”地提高 Drupal 的性能?
转到 admin/settings/performance 页面,打开 CSS 和 JS 聚合,以及最短生命周期为 1 分钟的页面缓存,将立即为您在高流量站点上提供支持。如果您正在编写自己的代码并进行任何查询,请考虑为昂贵的函数编写自己的离散缓存。链接的文章涵盖了 Drupal 5,而不是 6,但 d6 中唯一的变化是消除了序列化要求以及 cache_set() 和 cache_get() 函数的函数签名。(均在文章评论中注明)
在大型站点上,还可以考虑将 memcached 服务器放到网络上:使用memcached模块,您可以完全绕过 drupal 数据库来获取缓存数据。如果你有大量的内容并且搜索是一个热点,你也可以考虑使用 lucene/solr 作为你的搜索索引器,而不是 drupal 的内置搜索索引器。对于内置索引器来说这很好,但它不是为繁重的负载而设计的(例如,每小时有数百或数千条新内容,具有繁重的多面搜索)。apache solr模块可以与之配合。
如果您大量使用视图,请确保您检查了它为未索引字段生成的查询;特别是按 CCK 字段进行排序和过滤可能会很慢,因为 CCK 不会自动添加超出主键的索引。在 D6 中,在管理屏幕中预览视图,复制查询文本,然后通过 mysql 中的 EXPLAIN 或您拥有的任何查询分析工具运行它。
YSlow 和 Firebug 之类的工具还可以帮助您发现缓慢的内容,例如大量图像文件、托管在远程服务器上的 JS 等等。
Drupal 6,开箱即用,提供 css 和 javascript 聚合 --- 大多数 css 和 js 文件将组合成一个文件(因此是一个 HTTP 请求),并且还缩短了空格(以减少带宽消耗)。您可以在 /admin/settings/performance 下启用此功能。
该屏幕上还有 Drupal(非常有效)缓存的控件,这有助于减少数据库查询的数量。
此外,由于 Drupal(以及您可能已经安装的所有模块)拥有大量 PHP 源代码,因此使用APC等 PHP 操作码缓存有助于显着减少请求时间。
我强烈支持 Benedict 对 Boost 模块的建议——如果配置正确,它本身就可以让您的网站在共享主机上运行,并且根本不会出现问题。
开启 CSS/JS 聚合,开启 Boost,你的网站对于匿名用户来说表现非常好。
If your site deals with mostly logged-in users, you're going to have to do a lot more work making sure sessions are cached well, and probably consider using memcached and more SQL query caching.
The biggest performance gains always come from caching—but monitoring and adjusting your slow queries, monitoring and adjusting apache and PHP configurations, and being smart about the modules you use are very important as well.
Other than the drupal default cache , there are some another method to increase the performance
Boost module is one of the best. memcache, Varnish(Drupal 7/Pressflow), CDN are the another methods that can improve the performance
It's also worth mentioning the performance boost from using quality SSD storage. It has consistently cut my initial response load times by 30% or more when migrating to SSD (I went from about ~450ms to ~250ms on my last project, using identical Apache/Memcache/Cloudfront EC2 configs), not to mention how much nicer it is to manage a snappy server where every command or script you throw at it is nearly instantaneous. I will never go back.