我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。4 R6 Q) `/ r3 g8 }7 t
Z6 T9 |4 M! j# Z) a% WBoost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。: V/ U3 x1 ^3 d- C. s3 V8 q' N
8 y7 w% ?& @, U: I% G
3 [4 K# ~$ U0 K) B0 H! f+ J0 j如下结构:6 J1 a) P$ V7 r: M
________________9 ]6 w. ~5 D& [4 m' s4 B+ H( u% a, b5 e
#login/user-panel#
6 ~6 g) U" z0 r* u" p6 |, I5 V: r________________
. j. b; i6 v% \# \2 u7 R( M' C" ?#page-static-body#9 v9 X; T2 V# G$ L
#page-static-body#
; ?4 j+ S4 B* u5 X" U& v& \- H#page-static-body#
* ]9 M$ E' B& B7 x* |( w________________. _( D- b/ Q3 r7 ^0 a( j( n
4 o$ B3 A4 H d, x这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。
8 {2 L' ^/ d+ p2 I8 \ h- x2 f3 v7 k: F- ~3 i
该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
) o; g! T$ d1 x1 ?; i( ]4 i
, x, c9 E9 q. B; `8 ]/ W幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。7 _- o9 `! v. L( ], |
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。 M2 J0 h" j/ z2 a+ p' N) Z* t0 c
8 ^- m! s0 I( {- u3 T
ajaxblocks的使用截图可以参考下图:
! C K( U' |& N0 Z5 C* r9 j$ [7 U6 j' r# X$ V. n6 [5 v
* k' l, G6 s: k+ N/ j, A! p5 a! k
6 B! e! [6 k8 m$ K6 A' g
! N8 D' |- R3 |6 n2 X8 h但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。
& ]' E/ b. A- [: T因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。. ^" y" Q D& [7 ?1 e1 l
5 G* y$ a8 p) Z0 c& Y9 _/ n
1 G+ F, q( \; S" g) r( f参考链接:– Drupal性能优化之-将Boost模块用到极致– Ajax Blocks 模块
7 @7 g0 x- ^6 \1 i! J7 V2 J
1 i2 _9 M8 y. d! Z' G3 H! m- V, x) m; _: d: Y( l+ R% p, o
) \# x" N& g: [) P
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 版权所有: Drupal与高性能网站架构 http://www.drupal001.com
* c5 x3 G9 j; p7 ]
1 P" o4 d; f8 r" G t3 y$ r$ m) k6 ^
|
|