|
drupal慢的几个原因总结 1,drupal慢的原因不是drupal的错,而是php的错,使用php加速器如APC,EA至少可以提高3倍的性能.: n; }* b; T! Q# d8 g* K
2,减少数据库通讯次数.尽管减少数据库通信次数似乎对响应时间减少不太明显,可是对一个访问量大的网站应该有帮助吧.( y! u( \4 G, F$ }6 r# M8 e- r, V& `
php天生的弱点,使得APC有了用武之地.drupal里面可以通过APC的apc_store和apc_fetch来优化locale和variable模块,经本人修改,最终local和variable模块都不会访问数据库.: ~0 b/ O& {8 P
如对variable_init的修改% K+ B, g1 p% O1 B4 i
function variable_init($conf = array()) {7 X8 u/ i1 \9 v& ^# q, w8 h
// NOTE: caching the variables improves performance by 20% when serving cached pages. $cached = apc_fetch('cache_variables'); if ($cached ) {
/ \+ R$ D; n9 W# A$variables = $cached;
5 y; u( }% s' d/ S) D}* c: ^' W0 j! ~. E1 ~" F3 \' P! I! R
else {
) X# _6 Z$ Y1 Q9 P% w" z' s$result = db_query('SELECT * FROM {variable}');
* w6 e. b K( c" S6 z+ Uwhile ($variable = db_fetch_object($result)) { $variables[$variable->name] = unserialize($variable->value); }. Z/ E* `3 S/ A4 L1 X3 Q
//var_dump($variables);
/ T% I1 M' A, t3 p' P) m1 Yapc_store('cache_variables',($variables)); } foreach ($conf as $name => $value) {
$ u( U5 O) T/ K) a2 M7 k2 i$variables[$name] = $value;
+ v' ~% J O! |} return $variables;
! f" d. O* X% Q: D6 Z, p6 h) i}
, o& y; n0 G! ]; g1 }5 Y使用apc cache来替代数据库可以显著提高访问速度(apc是共享内存访问) 3,通过用devel模块观察,似乎drupal慢的原因并非数据库通信,而是CPU耗时 一些提高速度的建议 1、非技术层次上就是把t函数输入的某些东东,直接更换为要输出的中文内容.. 2、应用上能够做到的就是尽管合理的使用模组,不使用华而不实的模组,模块使用太多是很消耗cpu的。 3、在使用中能够做到的就是处理好内容组织:其实,我觉得这一个是很多的人都忽略了的,举例说,很多的人都喜欢把一个网站的所有信息都调用到首页,最近评论,论坛最新主题,活跃主题,最新用户,最新公告,用户排名榜等等,太多太多的信息放置在首页上,可能这样有利于做一个针对于搜索引擎的索引,事实上对用户的访问就吃力了,就算启用了cache机制,但是对第一次访问的用户来说,这简直就是一种折磨..事实上我们可以分开列出一些页面如/recent /recent_comments, C$ u" S& B/ Y F0 M3 c
/active_topic;/we_r_newbie;/user_by_points 等等页面, 或者说重新设计首页,把这些内容综合起来,用户可以根据自己的需要访问不同的页面等等..减少首页的数据库访问负载分担给网站的分页面,让用户对网站的第一印象稍微改善一些..
; J1 V* G6 C; q. a |