主页 > Drupal | 高级优化实践 > Drupal7性能优化简述

Drupal7性能优化简述

PDF版本

本文简单谈一下Drupal7的性能问题,以及优化的方法。有些部分内容是参考翻译网站,有些是修改之后的总结,关于Drupal7的优化本篇也只是抛砖引玉,简单的谈几点。
公认的Drupal7性能比Drupal6慢一些,虽说Drupal7性能有点慢,但其实有很多地方,Drupal7在性能上做了大量优化,下面列出几点:

Drupal7 性能优化

我们谈了很多性能优化,但是优化到底是什么?如何衡量呢?
一般情况有两个指标:
一、响应速度,网站对单个请求的响应速度。
二、请求数量,高并发的情况下,网站每秒最多能处理多少个请求。
因此性能优化就是提高以上两点。

1. Path alias的修正以及缓存。
2. node_lode_multiple 批量加载。
3. 在数据库case-insensitive的情况下,用LIKE代替LOWER。
4. 默认支持MySQL的Master-Slave架构。
5. 反向代理的默认支持(如varnish)。
6. page_cache_without_database 特性。
等等。(更多可以参考Drupal大学里面关于Drupal7的讨论:http://drupal001.net/topic/59

SQL vs FieldAPI – Drupal7的最大变化

Drupal6里面,默认的一个content type,都会有一个cck建立的数据表,只有当某个字段含有多个值,或者这个字段被多个content type共享时,该字段才会单独建立一个数据表。
但是,在Drupal7里面,所有新建的字段都会放到一个单独的表里,这种设计从数据结构的层面变得简单了,但是效率却不见得高,尤其是一个字段非常多的内容类型情况下。

自定义内容类型
可以不通过FieldAPI,通过代码hook的方式,实现自己的内容类型,这样也可以像Drupal6那样,把所有的字段放到一个表里,从而提高查询速度。
不过这种操作成本是非常大的。

MongoDB
MongoDB是面向文档的,基于BSON,no-schema的数据库。Drupal7可以很容易的集成MongoDB,每一个entity为一个document,每一个content-type是一个collection。
由于MongoDB是no-schema的,因此通过FieldAPI在添加、修改、删除字段的时候,甚至都不用ALTER TABLE等操作。
尽管MongoDB还不是很成熟,但是MongoDB和Drupal7的配合,是被证明了能提高drupal性能的有效方法。

缓存与Session

在Drupal7中,的缓存功能也增强了,并且watchdog、session、cache都可以进行设置。默认的cache多了一个bin,名称是cache_bootstrap,这个是缓存drupal启动的项目。建议将这项单独放到一个APC的bin中。

建议:Drupal7中的缓存项最好分到不同的bin中,配合entity cache(entitycache模块)、panels cache(panels_content_cache模块)、views缓存等,性能可以提高不少。

登录用户缓存-Authcache
Authcache本身可以提高Drupal对匿名及登录用户的缓存,但这个不是Drupal7特有的,Drupal6时代已经有authcache、boost等缓存。
原理以及使用方法,此前已有很多讲解。

Drupal缓存 – Authcache模块原理详解
Authcache模块高级篇-动态加载内容
Authcache+Mobile Switch构建高性能Drupal站点

文件存储

Drupal7使用php stream封装文件操作,因此在Drupal7中,不仅仅是本地文件系统,以及S3、阿里云等外部存储系统也很容易集成,比如阿里云的存储服务,Drupal已经有一个模块了:

https://www.drupal.org/project/aliyunoss

Drupal7性能优化模块大全

大全不一定全:P, 这里列举了Drupal7中性能优化常用的模块,每个模块都对Drupal7的性能有一定影响,具体的使用就不一一介绍,大家可以看模块的相关简介以及亲自体验一下,如果有其他问题,可以到Drupal大学提问讨论(http://drupal001.net)。

http://drupal.org/project/agrcache
http://drupal.org/project/apc
http://drupal.org/project/boost
http://drupal.org/project/authcache
http://drupal.org/project/cdn
http://drupal.org/project/core_library
http://drupal.org/project/entitycache
http://drupal.org/project/panels_content_cache
http://drupal.org/project/display_cache
http://drupal.org/project/efq_views
http://drupal.org/project/hash_wrapper
http://drupal.org/project/labjs
http://drupal.org/project/headjs
http://drupal.org/project/media_amazon
http://drupal.org/project/memcache
http://drupal.org/project/mongodb
http://drupal.org/project/performance_hacks
http://drupal.org/project/lazyloader


声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2014/06/drupal7-performance/
版权所有: Drupal与高性能网站架构 http://www.drupal001.com


, ,

评论:5

发表评论
  1. avatar
    回复 王鹏
    14/07/26

    谢谢你的文章

  2. avatar
    回复 吴国强
    14/07/31

    drupal安装之后产生的搜索引擎不能识别的这部分代码如何删除呢?

  3. avatar
    回复 吴国强
    14/07/31

    drupal安装之后产生的搜索引擎不能识别的这部分代码如何删除呢?
    meta property=”og:url” content=”" /
    meta property=”og:title” content=”" /
    meta property=”og:description” content=”" /
    meta property=”og:image” content=”

  4. avatar
    回复 苏北老农
    14/12/24

    建议加上memcache storage模块

    • avatar
      回复 robbin
      15/06/07

      这个模块不错,不过之前使用过一段时间,有时站点莫名其妙负载高,再测试一段时间。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


× 九 = 54

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的链接
Drupal7性能优化简述 来自 Drupal与高性能网站架构
顶部