我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。 F, Q* I- @, O! \* [6 n7 E
' Q2 e9 F L3 U
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。
5 }! s: i. [& a8 ^- b1 Y
8 S% N# b s; M- R4 m6 o
; F E. ~7 s L" K, u5 g如下结构:+ k- F0 w. w1 O4 C- u, N+ h
________________: |8 c; C$ g( F1 b6 p i u/ y
#login/user-panel#
7 W$ i/ V3 v: A: C________________: @( w1 q* F/ N/ z! q, W0 b1 A1 _
#page-static-body#5 i& i: I% t4 g/ U; A5 U
#page-static-body#
% w+ f9 C7 b5 \#page-static-body#- p% R, ~: ^1 q
________________
" u, ~8 \, e7 {% o- S
`5 {' z, S- w" U! B8 U, ]: e这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。
p1 @' R, d* {- s5 W& Y: e3 \" ]
该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
! W n; K1 |, n. G9 t2 | {" G4 s5 w& R8 J
幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。 z+ ]! q. h$ F2 K
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。6 Y# b0 h5 y$ ^, r* @0 n# \
; R, {( }( k/ W( C$ N+ |
ajaxblocks的使用截图可以参考下图:* p+ i, Q, J! a# j
+ |- S: Y W3 D7 O! M! e9 p
* o5 [7 J( Y0 [. I' @
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。3 t9 M, x; }3 S( \9 z" Z# C
9 W$ N) e. q7 r2 k( B因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。
2 D( h+ c) P1 j' g3 ]9 I参考链接:
0 L! e' O: F9 _5 B– Drupal性能优化之-将Boost模块用到极致
0 I* B% j' v2 q– Ajax Blocks 模块
8 j5 [9 b( `0 u" x# w3 ?- s \$ v
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
3 ~6 g! r b: E, ^$ Y本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ $ A( z# ^" ^0 s/ c& R# _9 q: J
版权所有: Drupal与高性能网站架构 http://www.drupal001.com9 m1 i! I: Z! ^
. Z/ Q5 K4 ^0 f6 I0 A
7 q; K7 D! m: y. i! D. C) F: \
6 _3 i) y: j7 S$ e* @ |
|