我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。
0 ?' y# E4 R; ?7 @6 @
, k) r+ Q* y: d% a. X/ W' QBoost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。
4 c" c, e5 x3 V: m2 T9 h: i; t9 M5 B0 m; |
7 ~" t3 D! u. q; U- U
如下结构:6 n3 V) P: A; M5 `; F3 p
________________( N* K/ P! B6 h9 N4 C! l7 U
#login/user-panel#
: A7 u% k' m2 x; R________________
& b: g( a9 J3 e+ W; N#page-static-body#$ v* g5 q& ?' w1 K) M/ q
#page-static-body#
8 A' x- {9 k" o$ |! X#page-static-body#
2 R* R0 N' B% t8 P6 o________________- h% Y0 V0 C: B& [/ P; o- N+ [
: Z3 F+ b' }1 R2 c
这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。
) T- ], P' S* v
8 I' p8 L0 L0 Q" E6 M该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
4 l1 d: M, u: ?: d+ O) u3 f( X
F" u8 L6 e% W. V幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。
3 J7 B( V- g5 _' U" i对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。! n" V7 D6 R( U' ~- Y2 N
; t% D5 n4 G5 Tajaxblocks的使用截图可以参考下图:; A( d. P! }9 ], M6 R, c
`" Y$ G, ?5 A9 [ k1 f9 o+ x
( E% z6 b. [ v+ W" P. m: y
J; e4 _# g* S4 g1 C
$ c+ \4 }9 k7 x' F0 e O0 k8 j但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。
% D+ M% W, B1 u, D2 ^8 V因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。5 h' ^- X% L' H6 F1 I
5 I6 B2 K O2 D
9 V) z; p- n# H8 m参考链接:– Drupal性能优化之-将Boost模块用到极致– Ajax Blocks 模块5 F- C! c+ f8 L/ n! j
5 l- b$ g) A& X* b
0 w' ^5 c1 \# N; ~+ M# {0 N& T7 s, ?8 A% @
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 版权所有: Drupal与高性能网站架构 http://www.drupal001.com
! P! K U! w6 n6 t; c( x4 U: Q
" d2 L7 `# {+ p( z1 u' k) D& j$ s$ a: {
|
|