我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。! ]# T" ]- Q$ L, _. H- Q
9 K* m- e% O6 s1 J }3 B8 M9 u
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。( K( ?, v3 h% G
2 {; o! c- ]& g1 B
$ p' ]1 S4 V* P; f# Q如下结构:
2 j9 }6 b3 z5 A2 z: [* M5 r________________
. P( U7 @) ]' b) F1 o2 {+ G6 h K9 `#login/user-panel#7 L0 E& O/ j- m! a
________________3 Y3 t: s. X0 K! W
#page-static-body#( _- V; u3 H3 ~' b$ u
#page-static-body#
1 J. ~' a; L$ i0 X. v+ Z0 p#page-static-body#
; e5 f" k7 k) C8 e8 `, ?( i________________( e R1 A. I) k2 S" Z
/ K) K/ t' s5 N5 _
这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。, i3 c4 g: z$ b0 a
- g1 ~, J" x/ m- O3 n
该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。! O; j: ]3 q, M) n; z3 n
: h5 B. _5 l, b0 h5 B+ X2 Y幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。) a1 ]8 d4 V$ G
对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。* H2 i1 P/ B# B4 C, n
. o! d! z/ X4 K5 h. e }. h
ajaxblocks的使用截图可以参考下图:
2 w8 T N4 E' L. Q) a) |( a7 {6 t- m+ c: ^ f) s
% h5 x- Q$ U! |7 A/ I" d
但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。8 P7 Y# n! ^" ?
6 j0 H: E8 D3 m
因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。
( b6 ?) \( T( E# C参考链接:9 }2 y* G3 L% u
– Drupal性能优化之-将Boost模块用到极致+ ]: B# Q: U4 h
– Ajax Blocks 模块7 u+ d F4 D1 G; \. J4 j
+ a/ @# @+ |* d0 \; P% K# _+ K* t
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 4 e H2 [" F7 Q! E
本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ " a: I* t' d4 v$ M/ x8 X! h4 n7 j
版权所有: Drupal与高性能网站架构 http://www.drupal001.com
2 ^3 X- s6 z, Z& P9 p9 j- Q! z6 I4 K! v0 j2 |) P% [0 P+ l
' F; V3 }2 }/ @- E* l
! {2 d/ p% [5 r9 ] |
|