我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。
( Q: t$ _! J6 O2 }" l, q- W' K! B" k, H, X: x. n1 F" e
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。1 f+ g2 z: D% | w. m* r& h4 d5 s& H
& u' W; o* v! n, q, {+ ~
" b$ R, p6 a+ ? Q
如下结构:
! e j+ {! S9 X) `( A& s& n________________" U" Y: }5 Z9 \+ N6 \9 o
#login/user-panel#
! g! }8 n9 H- }2 W3 o' {! ]________________- ~. L+ e, E! C% d4 n( T) ?$ R
#page-static-body#3 x- [( l4 c* u, @
#page-static-body#, Z- P9 h/ s( k( K7 U+ _0 k9 Q a( N
#page-static-body## g& h! j) n0 r
________________
, L' Q1 h' z+ ]$ L: S& i( S$ {
7 G6 f/ Q$ g( L R& K4 |这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。
' g& w$ P7 ]- j" i" L1 V
) d4 I; a# I" E该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
8 [: L @$ X' k/ F% J, |6 O8 V
% h! g! \: J4 N/ q& ~幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。1 O4 U/ p/ U2 A! V5 ?
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。
% }4 `$ S- n2 Z! k4 D5 G
% U% y( @' s Q: I- r% Oajaxblocks的使用截图可以参考下图:
0 ^8 p& P2 V3 C$ c3 Y2 N% w# c# k0 ^7 E
" V; t: ^' q: [% Z5 W2 Q: V $ c( I. @9 t+ ~ z+ _
; M# a' g' j, K' g# b. U, V. T& P( M7 J( h3 b
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。' v/ O- _. {$ F6 I3 k
因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。
: [" E! z$ ?8 X/ \
1 i, G$ r+ O: Q) V; @' b+ a; o! P& d/ f
& X7 a" I' O% r8 t Y/ ^参考链接:– Drupal性能优化之-将Boost模块用到极致– Ajax Blocks 模块
+ O- `1 B6 L; V- _" P9 m# I
3 k( j: _: H1 `- K% ^1 q! c9 ^+ Q |9 d# g/ x
! v1 Q6 ?! O! j* N; O4 R9 O8 U声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 版权所有: Drupal与高性能网站架构 http://www.drupal001.com
1 N0 R3 R+ I. H3 _; K& H
) h. e& l5 t( d+ R4 V: u! L! g6 B% H: F; k1 b* q
|
|