这段时间研究Drupal7的缓存相关,看了好多资料,都提到了boost和authcache两个模块,今天来说一下boost。

具体的下载安装,配置等,官网写的听清楚,boost模块地址 ,安装配置方法:Boost Handbook for Drupal 7.x

先建大说一下boost的原理,它本身只为匿名用户提供缓存,因为匿名用户看到的页面都是一致的,的缓存方式也很简单粗暴,但是也十分高效,就是直接给存成html静态页面作为缓存,下次访问时,不去走drupa的一大堆流程,如果命中缓存,直接就返回静态页面,是不是很爽?不用访问一系列的函数和数据库,直接返回html页面,难道还有比这更快的?(当然boost模块相关的一些函数和一些drupal必要函数还是要走的,因为boost毕竟还要根据url和用户角色来判断是不是要缓存这个页面等)。

可是我又想让它对已登录的用户也起效果,怎么办,啃了半天源码,找到了:

/**
* Implements hook_boost_is_cacheable().
*
* TODO support for node types, etc.
*
* @param $parts
* info about this request
* @param $request_type
* if the request_type is "status", we assume that this is being
* called from the admin status block. Since the user must be
* logged in to view this block, we do not return false.
*
* @return $parts
*/
function boost_boost_is_cacheable($parts, $request_type = 'normal') {
global $user; if ($user->uid != 0 && $request_type != 'status') {//重点!!!
$parts['is_cacheable'] = FALSE;
$parts['is_cacheable_reason'] = 'Boost only works for anonymous users.';
}
else {
$parts['is_cacheable'] = TRUE;
}
debug('1');
return $parts;
}

看到了吗,由于有hook_boost_is_cacheable()这个钩子,所以呢,boost在判断是否为这个页面进行缓存的时候,以角色作为依据的代码就是这样了,当然角色只是一个判断的维度,但是对我的需求已经足够了。 直接修改判断条件为:if ($user->uid != 1 && $request_type != 'status')。

为什么是修改为“$user->uid != 1”,因为1是指超级管理员,没必要为了个位数级别的人去添加缓存,浪费硬盘资源,没有任何意义。排除了超级管理员,剩下的角色就是匿名和注册用户了,是不是很爽?

当然了,有人会问,那不同的角色,看到的页面内容肯定是不同的呀,就算缓存了,也不符合“不同人浏览,看到不同信息”的实际需求啊。

到目前为止是这样的,我目前的解决方案是使用一个模块:ajaxblocks,通过它把不同的block区块通过ajax加载,就行了,这样,不同角色获取不同信息就交给后台对block的处理了。

但是,又有一个问题,没有对数据缓存,这需要memcache模块,不过我还没有研究,后续再补上吧。

怎么样,我的解决方案可行性如何?希望大家指教~

drupal7 boost模块为登录用户提供缓存的更多相关文章

  1. YII学习,实现基于数据库的后台登录,用户体系.

    上次研究Yii框架写到了要完成用户登陆系统.这次接着上次的写. 参考官方权威指南和参考手册,外加各种博客文章.历尽千辛万苦,数遍天上滴星星.完成了后台用户登录.这里用到了YII框架的 CUserIde ...

  2. SVN更改登录用户(转)

    一) 原地址:http://www.ixna.net/articles/2606 //证书缓存 $ svn list https://host.example.com/repos/project Er ...

  3. Spring Security——核心类简介——获得登录用户的相关信息

    核心类简介 目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authenti ...

  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能

    不管是什么系统登录用户都有忘记密码的时候,忘记密码就进入不了系统.系统应该可以提供重置用户密码的功能.在我们框架中重置用户密码功能一般用用户管理员来完成.当然如果做得复杂点还可以由用户自己来重置(如: ...

  5. 解决 Jumpserver coco 使用登录用户(ldap)进行SSH连接目标主机,忽略系统用户

    前言 Jumpserver 作为国内流行的开源堡垒机,很多公司都在尝试使用,同时 Jumpserver 为了契合众多公司的用户认证,也提供了 LDAP 的用户认证方式,作为 Jumpserver 的用 ...

  6. SVN更改登录用户

    如果装了TortoiseSVN: Settings -> Saved Data -> Authentication Data -> clear.即可清除保存的上个用户登录信息:当再次 ...

  7. 9、FTP封杀用户、限制传输速率、限制访问目录、为匿名用户提供下载资源

    一.封杀某些用户访问FTP服务器 例如  封杀 yanji [root@localhost root]#   vi   /etc/vsftpd.ftpusers     (用户控制配置文件,主要用于限 ...

  8. Linux系统下查看已经登录用户并踢出的方法

    LINUX是个多用户系统,一旦连接到网络中,它可以同时为多个登录用户提供服务. 查看用户的操作 查看当前用户: [ROOT@LOCALHOST ROOT] # W                    ...

  9. 转:使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制

    原文地址:http://blog.codinglabs.org/articles/nginx-memc-and-srcache.html 为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcac ...

随机推荐

  1. Microsoft.VisualBasic.dll的妙用and 改善C#公共程序类库质量的10种方法

    Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦) 前言 做过VB开发的都知道,有一些VB里面的好的函数在.NET里面都没有,而Microsoft.VisualBasic. ...

  2. Centos 64位 Install certificate on apache 即走https协议

    Centos 64位 Install certificate on apache 即走https协议 一: 先要apache 请求ssl证书的csr 一下是步骤: 重要注意事项 An Importan ...

  3. C++ Config 配置文件类

    C++ Config 配置文件类 本文Config类的序列化和反序列化使用的jsoncpp, 因为jsoncpp提供的方法很简单易阅读.配置文件的格式自然也是json. 1 { 2 "ima ...

  4. PostgreSQL9.1 with PostGIS 2.1.4 for mapping coordinates on linux/ubuntu 已经打包成deb 可下载

    For location based service, I try to use postgresql with postgis. You can download postgis from here ...

  5. OpenCV环境搭建

    前言 我在上本科时候曾经用过opencv,那时候还是1.x版本,还必须在linux下自己编译. 时过境迁,最近突然想起来写个小程序来分析图片,就又想起了opencv.现在已然是2.4的版本. 环境搭建 ...

  6. NodeJS Stream 二:什么是 Stream

    对于大部分有后端经验的的同学来说 Stream 对象是个再合理而常见的对象,但对于前端同学 Stream 并不是那么理所当然,github 上甚至有一篇 9000 多 Star 的文章介绍到底什么是 ...

  7. 高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用

    高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用 注:WAVT指标由Warensoft(王宇)原创. 前面聊了一系列的常见应用指标,包括短线.长线的指标,并且也无耐的 ...

  8. dapper 可空bool转换出错及解决方案

    最近使用entityframewok生成数据库,使用dapper来访问数据库,产生了一个意外的bug,下面是产生bug的示例以及解决方案. 由于用entityframework生成数据库,默认情况en ...

  9. DroidPlugin插件化开发

    360手机助手使用的 DroidPlugin,它是360手机助手团队在Android系统上实现了一种插件机制.它可以在无需安装.修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作 ...

  10. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...