我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。
% o5 q0 o: F9 q& K4 S0 B+ Z
% B q9 u! {6 k3 n5 C8 w$ dBoost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。. g' ^# e7 `0 T: ?' C$ ?
2 d: p" m) v0 W, H4 |" N# V9 `1 U" p5 U
7 }" B# J% V. V3 @8 ^
如下结构:7 n6 t4 @# x Y& w3 L( a
________________
5 X; f( X( O4 F0 J#login/user-panel#
: m" Z0 M# R! W" l* B, w________________
- Y1 N* k; k; L0 F3 ^#page-static-body#* {8 N& ~5 S9 U
#page-static-body#
$ ^ l/ b D! t5 ^#page-static-body#$ x9 I0 d6 M* ?9 L8 } ?. F. i: o
________________6 Y9 y1 O# c# H2 l0 ~+ @. `
8 [ u- Z' q! }! z" s `$ M这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。3 N% J9 O# B$ o! T7 L% r
4 I1 A& M- p7 y7 p7 ]: p
该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
/ B6 J" x/ j; F' _7 [' v+ u4 y/ Z1 `5 ~' L$ ?& l
幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。9 u6 a- W# ?" h
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。
" Y/ @. T1 k; M& w3 O# W* y0 N
: n* y! x2 v( } [) J% t8 s& t. ~ Vajaxblocks的使用截图可以参考下图:: v M6 E- Y2 }* u3 E
V7 q0 P; D3 k3 D4 T! e* p T2 i [4 E. R0 E, W+ d# ]" o
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。0 V# B7 c1 U; X0 P
+ E) y' T) Y: j4 c5 p' s6 c
因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。
# U- G* b: I) C3 {; z& z3 g参考链接:! |, \. }; H" v& A+ V
– Drupal性能优化之-将Boost模块用到极致
6 ?- E- C% y7 {6 C7 f; |! s– Ajax Blocks 模块/ B& _0 f( c! d5 }" ^' r* Y# x
7 O! F6 m4 Z6 a' ]7 C0 K
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
* y3 C* ~7 x, w9 L3 o本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/
2 A" Y3 Y1 @# `7 q+ J; |! Z版权所有: Drupal与高性能网站架构 http://www.drupal001.com
* c( f7 @7 o, c! ?, @: Z% q0 a! F7 ^5 C, I- @. [1 s ]4 b
: `+ K9 d4 B M3 E- ^- T, L; O+ h" B8 @. @. R
|
|