我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。
! P9 N6 S: v1 O4 X s$ V
) g. s0 j7 K j KBoost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。
0 o' `8 C9 P. L% @6 |/ J, Z+ \- ~, t: }: U, f; J- |8 ^
' z, g' U' c9 k( {: i! X如下结构:4 ]5 S6 J/ q: Z
________________
' d( H+ ?) E$ [6 J: {2 c) C#login/user-panel#
0 Q. C+ D: Y" T4 \. k) b% I+ N0 ^: e4 ]________________
]3 n" f) V3 h: H#page-static-body# B( f! ~2 c% t. t/ M
#page-static-body#: d) U0 v, K4 y) X5 ~: _8 r9 X' ]
#page-static-body#+ L5 s$ Y Z, d, G& z
________________
3 ^$ N: I" W' t1 W8 A$ e7 N
1 b9 I2 y7 o! f: v' l这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。% p1 q& B3 h; |; z2 @' T6 E( [
5 J# |+ s" Y# }) `8 ^- }9 }该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。 Z% ~5 n$ ^* Z! b# b& A g- Q, d
' q( h* D5 E, z; ?1 }6 N1 z8 }
幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。* s7 f; }* Q" [$ r& j o' }. K
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。
/ d) u3 O; X- t* P/ g! l: T; R3 o" f* O6 V( C. x* g
ajaxblocks的使用截图可以参考下图:5 J: d' `- E4 _6 `. f& s
9 [0 @4 e, G4 {& y& A$ k7 V( s* I
+ D6 p) R3 I- ]$ y; M0 k& `
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。5 p/ ]1 C2 P0 m8 K) d& K2 X
* O1 z; u. i) S% i0 `3 ]/ `因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。$ X6 K( X/ y! n. }/ t7 l4 P. ^
参考链接:
" y0 p0 _/ h/ A5 s9 O4 W5 O– Drupal性能优化之-将Boost模块用到极致
- b9 a, D. @8 O0 ^, c– Ajax Blocks 模块" [* G+ a( c' b: [
! N, E# ^8 ]' Q3 o
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
8 b7 I: ]5 R* @* p本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/
& d# @5 g0 N' y: \7 n- x! o* }版权所有: Drupal与高性能网站架构 http://www.drupal001.com
8 D$ K# h5 Z+ w1 Z O
" T& Z0 Z2 C) J/ J" U; M4 i' o& H3 j) l7 o8 ?, m, u2 K
. @. _/ @# \9 a' b
|
|