国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal优化/SEO/环境] 再谈Drupal 7.X的性能优化运行速度问题

[复制链接]
发表于 5-30-2012 21:44 | 显示全部楼层 |阅读模式
D6升级D7之后,性能着实让人头大,不妨参考下面文章,另外站内搜索DOOOOR里其他优化文章,中西医结合吧。其中CDN和BOOST效果还可以,其他的没试过。+ Q0 f( M7 U; e8 A

8 C# |$ [, z" T) j! I; R6 z1,服务器5 [) d& o% ]8 |6 i: K! ~

) ~" z* t7 Q+ E9 w2 Z# HWeb服务器建议,推荐使用HAProxy/Varnish作为前端代理,Nginx作为Web服务器,php-fpm作为FastCGI处理PHP程序,当然也可以使用Apache作为PHP后端处理,但是不推荐使用apache作为Web节点服务器。
0 I$ ]4 j0 p3 BDrupal有一个Varnish相关的模块http://www.drupalla.com/project/varnish" M( D6 k8 b8 `
5 _# P7 B5 ^" \( N2 Y
2,使用Drupal的Pressflow版本1 m4 J/ C- ~& X- }+ d3 r$ n! V! W' ?
4 l3 b( R7 }1 P. \1 ?6 B) U8 d
Drupal本身没有太多考虑性能的优化,Pressflow是一个专门针对Drupal的优化版本,包括支持Mysql Master-Slave等等。对于大型网站,选择Pressflow是必须的。: o4 z6 u7 x; K4 j
http://pressflow.org/. F$ F% m" z& Q( U( c+ R
! i0 h. n0 {- U, @) I, }; F- R  \4 b
3,使用静态页面缓存(Boost模块)
8 V3 B6 g; t8 k- Y# }
% ?  A0 E6 Z5 O1 q5 R静态页面是最快的,没有之一!
2 U+ d* I) ^; k4 _因此静态页面缓存是最佳选择,尽量把页面动态的部分独立处理,用ajax/iframe调用,整个页面是静态页面,部分用ajax刷新(当然用shtml也可以)。 Boost模块经过稍微调整和修改,可以设置某些Roles(比如一般认证用户)也读取静态缓存(apache/nginx的rewrite),并且可以很好的工作在Apache和Nginx上面,并使某些角色,比如管理员,不读取静态页面。对于一个普通网站,90%以上的都属于普通认证用户和匿名用户,因此,经过这样修改可以大大提高性能。
( d; I$ @0 H! v具体如何使用Boost模块已经如何让登录用户也使用Boost模块,可以参考这篇文章,让Drupal/Boost模块发挥到极致。9 `# ~6 P4 v: U6 T
Boost 模块地址:http://www.drupalla.com/project/boost/ Q* k: m8 A; ]4 {) U
( T8 x% ~1 |. w+ h
4,opcode
0 S) N6 I) w8 }4 m" k
' F  t& M) s: P/ x1 f( p1 DDrupal 需要load相当多的PHP文件,所以opcode是必须的,MUST!( B. P5 L1 e* F1 a9 c
实践证明eAccelerator比APC和xCache好一点,注意:APC的某个版本在NFS环境下有bug,不能正确缓存,所以建议使用eAccelerator。8 @4 H: J  ^  u. T  }! u

9 t) d) R! M' F, o) u' Y" m- g5,使用CDN
, @7 n! l) n! i! t* @1 K2 r- ]  Z* }/ ]' p
要想使页面加载较快,必须使用CDN。(原理请查阅相关文档)
8 c2 ?8 C4 O$ C1 cCDN Drupal有两个模块 Parallel 和 CDN,Parallel比较简单,推荐使用。但是Parallel目前已经并入CDN模块,所以还是得要下载CDN模块http://www.drupalla.com/project/cdn4 Y$ k! W) A! e2 y* d4 D4 s$ d
; t6 m2 \$ c+ q3 ]4 w  ]
6,数据库结构合理、分表、分库0 p0 G) S9 j: `  C9 [
不要使用content-profile模块。, q, v1 f1 b# @+ \$ n
该模块把profile信息存储成一种你node-type,问题是这样会导致node表比较大,但是profile的node除了uid之外其他都是无用信息。加入一个网站有上百万、千万用户,再有很多文章(node),这样node表将会非常大,尤其是一个user有很多profile的node,比如5个,这样node表就会有5倍的user数量的node。导致查询node、user都没法处理,views之类的工具更是没法用,因为views生成的SQL将会非常慢。4 {" N6 M9 }$ R. P
把user相关表分出去,到独立的数据库,这样可以方便其他站点,比如子站,共享用户信息。& M& W# `3 H; s6 N

+ C/ Q: v) H( D* M4 }" J7 `+ J- O对于大型网站,不推荐使用太多第三方模块,因为大多模块都是基于node,如果跟node没有关系的独立数据,建议自己写模块来读写,这样方便数据的拆分和优化,又减轻了node表的压力。所以再使用模块前,必须了解模块的工作机制。
; v8 x$ F0 v0 w) m! s5 b8 E5 g4 M( c( L& w" o0 M* r2 W7 j
另外:
' G7 N- C8 a) A6 O& |4 }0 j; s. m2 X: j  B
1,别用 虚拟空间,选用vps以上
( X* c- P2 z, P1 u4 g$ R7 r2,nginx 替换apache,apache 是耗内存大户% H- s* a% B$ p1 i
3,静态资料多的话,安装boost
( D& w3 \. `% w* }5 G- ]4,安装apc 高级缓存
& P: i; D/ r% a1 T4 p# m3 f) M5,后台开启缓存,并且压缩css,js
8 h. M7 k' S; n- H6,可以的话尽量少用大模块,如 views,og,还有是关掉不必要的模块,如devel
, |" O6 o# V) g0 l7,还有一个drupal 高性能方面的网站,可以上去查看资料。http://baidurl.cn/uzh
# ~- a' E+ d; |/ {8 j& s
& n9 L& k$ i+ V. s本文选自:猪跑啦,谢谢!# f/ u+ f$ {0 y* I% c5 L$ G3 K

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 6-16-2025 07:37 , Processed in 0.351514 second(s), 175 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表