我们知道,Drupal的Boost模块是Drupal静态页面缓存的必备模块,关于Drupal整体优化,请参考前文《让猪去飞-漫谈Drupal性能优化经验贴》。: @" Q2 G/ Z% v. t( b. q0 }
9 K! r7 @. _9 `) S. |
Boost模块只提供匿名用户的静态页面缓存,但多数情况下,我们站点的登录用户访问量也很大,我们需要让登录用户也使用静态页面缓存。这里有一个前提,就是登录用户看到的页面和匿名用户看到的页面比较相似,除了一两个DIV里面会显示登录信息之外。
4 Q. Q* ^/ a q& P- r8 ?$ S
) d9 j( P2 n% }7 N8 \! R
) P3 u* O/ Q1 f2 d如下结构:
Z# C! D' Z3 ?________________
$ B X; r1 k' {4 R8 c#login/user-panel#
6 A: e+ H# [. f0 k3 i1 n________________
& u4 A6 V- W# b1 }, {9 c; E5 P2 j#page-static-body#. Q1 e; @! b6 h% B1 ?" l, {1 y
#page-static-body#
5 w2 o: x1 E( d6 N( b/ }#page-static-body#% d3 V' }3 a9 q( r' P" L( `
________________
. d+ v! A5 w' }) S7 z) R4 A1 h: c6 m+ ]
这样,可以把上面的用户信息区作为一个ajax请求,当页面加载之后,然后通过js/ajax获取动态的登录信息。因此就实现了对匿名用户和登录用户同时使用静态页面缓存的效果。具体的操作请参考前文《Drupal性能优化之-将Boost模块用到极致》。, p, ^( P1 e/ I; P" t
4 D9 j ?. A* T6 g/ F该文中的方法虽可行,但是由于要使用ajax以及要自定义menu_callback,对于一些快速开发和Drupal Way的开发方式可能并不实用。一般情况下,这种用户信息都是Drupal的Block,所以如果我们能把某些block自动转换为ajax方式的加载,那么会在开发速度和Drupal规范方面带来很好的体验。
8 n% X8 Z3 N' M/ H
+ U$ ^/ E7 t! \幸运的是,Drupal已经有了这样一个模块,ajaxblocks,该模块可以把一个普通的Drupal block转换成ajax加载方式,使用方式也很简单,就是在Drupal的block设置页面,可以启用block的ajax加载方式,并且有很多其他选项,比如loading的图标,缓存方式等等。
9 u' p7 F) z2 B! l% @对于一般的前台页面,用Boost模块搭配ajaxblocks模块使用,完全可以让匿名用户和登录用户都能使用Boost的静态缓存,可以大大提高Drupal的性能。
! H) |6 t1 H7 ?: E+ F! \$ f; h
2 I0 H8 m. Y. L( Y. _/ s: B8 \( eajaxblocks的使用截图可以参考下图:
# g% P# f. f1 A( z+ C) ^- }2 H1 z" L) g

- u0 B! _3 Z; Z( I9 s/ n0 C9 A
% f* ]. w) D; Y7 U' b T
8 _# |- h8 Q5 ^- z1 z5 @; M但是需要注意的是,要让登录用户也使用静态缓存页面,需要修改Boost提供的相应的Rewrite Rule。0 r2 V4 b7 j/ K8 `# L/ W7 K
因为默认情况下,Rewrite Rule会忽略登录用户。如何修改Rewrite Rule,请参考下面的链接。3 @8 `0 K' I2 d1 Z8 B* U/ o
; d$ A- H' C3 @; `8 B7 j
# t7 Z# U/ |) [ ]' f/ J7 L' H% _
参考链接:– Drupal性能优化之-将Boost模块用到极致– Ajax Blocks 模块: d: i/ |! L, v+ t* ~
( p4 N9 O) [2 R7 M& L! e) r
, |! K: K7 {7 h& D, h2 L% c
1 b+ {; z. }2 x$ ?, D
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 本文有效链接: http://www.drupal001.com/2012/01/drupal-boost-ajaxblocks/ 版权所有: Drupal与高性能网站架构 http://www.drupal001.com+ j. R! m# n4 `( j
$ v8 j, p0 i8 I5 k0 c! s( H/ a
' i; b4 B& Q, O* o4 m* _ |
|