我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。3 E2 b9 [0 F) v! S
% [9 \4 }% f$ {- P. ~
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。
% j, a+ o0 B: X" w* E0 Q- m; z1 V/ _" I* r( t
5 G1 z6 D3 Q) Y5 ~# Y; L& y+ Y! e如下结构:* Z" @0 d2 V% D0 z
________________$ k) N2 O- H; g% ]
#login/user-panel#2 W; d1 c9 O4 q
________________6 k8 p* x0 ^2 l
#page-static-body#
. o3 L: {; k- n" |#page-static-body#
$ Y+ |( Y, l' Z @#page-static-body#, C1 e2 z J O9 f4 @ L
________________0 \& r+ m6 h4 Z+ U) _
# n9 v5 v" l/ j, S/ T这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。
: V a, O! n! _% o
, u' x" f$ s! x# n$ z该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。* r$ D3 p) i4 t1 |" L
+ \3 m0 f, U1 n2 b( s8 Y
幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。! g* d. t. h' Y3 V
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。: {* Y) U8 L% U/ s$ o, @* K0 b1 ]$ S
7 \" ~0 [5 f9 k' P' o! M) v5 q/ t
ajaxblocks的使用截图可以参考下图:, Q' P, n3 K9 ]# Z8 T- p
7 r& W1 x: _# \7 N9 x
# s! H; i' [9 X2 x/ Q但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。
/ @) F% V: J; h0 |8 E
2 n3 Z/ y' l4 o* P因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。5 X5 a! D' n! f+ }. G$ Z
参考链接:
Q+ E, t# y0 K; R3 w7 N– Drupal性能优化之-将Boost模块用到极致6 T" Q X$ @# G* o3 _+ U" X" ^
– Ajax Blocks 模块 e# I+ q3 p- x1 k4 g! H* U
d3 @. C& K3 l9 c$ p" f" |$ ?* e
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 # V3 v% N+ F; S+ K+ F
本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 9 f2 Q) z; @8 b& H' [' P9 K1 \4 m
版权所有: Drupal与高性能网站架构 http://www.drupal001.com
( U6 ~: K# |, n& Y% E# H
( j( S) S9 k# `5 [; l- q0 C; o+ D* u# _% g
: c2 ?, s* c f! { |
|