我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。- [7 N. J' @5 q8 x
7 f+ u# C I0 q$ }& J* }6 |
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。- S5 n9 [- O6 [
' Q' O/ e# [& L: }9 x
/ L& N, o, K/ B9 x
如下结构:2 D8 f U# Q: H' { e' W5 s5 D
________________
( o, d" z8 Y& L; R' a#login/user-panel#8 l }9 p- _" R
________________
: Y; y2 g, E4 _9 G) B#page-static-body#
" a3 j, V, f8 y6 Y% S" h7 L#page-static-body#
1 D! {4 ]' Q+ J. E. p#page-static-body#
' U, k: K: A' ] Q( N________________8 T# z0 r( C& i+ O
* v* q- W/ @8 \1 A
这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。$ W! ]) `: w4 G9 }( |. ~& U A
. h" A- p/ }+ C' t$ o; C+ B
该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。4 d; f1 ]& S' Y: N) ~9 g- l
/ E8 k8 w' h: {0 p V- K% I; h( Q幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。* C. H' c! ~3 J- v. n
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。8 C$ j- z, P! t/ Z8 h
0 i3 `2 a* y( n" P# k
ajaxblocks的使用截图可以参考下图:
* y/ J6 [- \5 w: }. S: c6 c7 s) Q6 W) h. P* J6 {) g
' t7 T2 [" r) K7 R# B3 f$ N0 c
2 m" D, _# l2 z4 @6 @
h6 V% D* P+ A' h, F9 R
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。0 R- R; c4 w; r5 k; S
因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。
- P1 } M. O! S# ^
$ B) Q Y1 ^/ A# I! I5 ?
( _4 s. h! T# w' w% T: l参考链接:– Drupal性能优化之-将Boost模块用到极致– Ajax Blocks 模块, z5 Z# E" }$ Z0 x$ t: U9 @
7 g/ [3 W# m% u5 Z! H
7 } I- y/ x# a5 o- ?8 v% e
k' M3 D- c1 P' J' ]6 J5 @* ?& c
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 版权所有: Drupal与高性能网站架构 http://www.drupal001.com. c, X& C8 Y9 j" [& F
4 e' _7 ^ c0 O3 B7 @7 X( M' T2 s8 G E' i$ s" A
|
|