drupal7 boost模块为登录用户提供缓存
这段时间研究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模块为登录用户提供缓存的更多相关文章
- YII学习,实现基于数据库的后台登录,用户体系.
上次研究Yii框架写到了要完成用户登陆系统.这次接着上次的写. 参考官方权威指南和参考手册,外加各种博客文章.历尽千辛万苦,数遍天上滴星星.完成了后台用户登录.这里用到了YII框架的 CUserIde ...
- SVN更改登录用户(转)
一) 原地址:http://www.ixna.net/articles/2606 //证书缓存 $ svn list https://host.example.com/repos/project Er ...
- Spring Security——核心类简介——获得登录用户的相关信息
核心类简介 目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和Authenti ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能
不管是什么系统登录用户都有忘记密码的时候,忘记密码就进入不了系统.系统应该可以提供重置用户密码的功能.在我们框架中重置用户密码功能一般用用户管理员来完成.当然如果做得复杂点还可以由用户自己来重置(如: ...
- 解决 Jumpserver coco 使用登录用户(ldap)进行SSH连接目标主机,忽略系统用户
前言 Jumpserver 作为国内流行的开源堡垒机,很多公司都在尝试使用,同时 Jumpserver 为了契合众多公司的用户认证,也提供了 LDAP 的用户认证方式,作为 Jumpserver 的用 ...
- SVN更改登录用户
如果装了TortoiseSVN: Settings -> Saved Data -> Authentication Data -> clear.即可清除保存的上个用户登录信息:当再次 ...
- 9、FTP封杀用户、限制传输速率、限制访问目录、为匿名用户提供下载资源
一.封杀某些用户访问FTP服务器 例如 封杀 yanji [root@localhost root]# vi /etc/vsftpd.ftpusers (用户控制配置文件,主要用于限 ...
- Linux系统下查看已经登录用户并踢出的方法
LINUX是个多用户系统,一旦连接到网络中,它可以同时为多个登录用户提供服务. 查看用户的操作 查看当前用户: [ROOT@LOCALHOST ROOT] # W ...
- 转:使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
原文地址:http://blog.codinglabs.org/articles/nginx-memc-and-srcache.html 为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcac ...
随机推荐
- 自己做个 Tag标签
这是效果图,下面是源码,时间有限,有时间再完善 http://files.cnblogs.com/wxwall/tag.zip
- 行业介绍:车载DVD MID 导航用料一般包含国腾LVDS芯片GM8284C/GM8283
车载DVD MID 导航用料一般包含国腾LVDS芯片 GM8284C/GM8283/替代SN75LVDS83,THC63LVDM83C , 音频ES7144/CS4344, 龙讯MHL HDMI芯片 ...
- [置顶] cuzy sdk之起源
程序员都熟知一句话, “不要重复制造轮子".应该说互联网的繁荣和普及给刚入门的软件工程师还是带来很大的好处的.尤其是github,sourceforge在国内日渐的流行. 在学习iOS和an ...
- 结构-行为-样式-Js排序算法之 直接插入排序
最新因工作原因需要接触到算法,之前学习C++的时候有接触过算法,Javascript中实现算法其实也是大同小异.下面我讲下第一个实现的排序算法--直接插入排序.基本实现思路:假定一个数组中前n(n&g ...
- properties + IO 读取配置文件
1.项目目录树 2.配置文件config.properties username = sushe password = sushe url = jdbc:mysql://172.16.100.10:3 ...
- 程序员快围观!2016年最受欢迎中国开源软件TOP 20
[PConline 资讯]开源软件对程序员来说是一个经常接触的软件,作为一个经常接触的软件,当然想知道自己用的软件受欢迎程度,基于此,开源中国在近日公布"2016年度最受欢迎中国开源软件评选 ...
- iOS开发-OC语言 (二)类的设计
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...
- trove命令翻译(上)(只做翻译,未实验效果)
The trove client is the command-line interface (CLI) for the Database service API and its extensions ...
- ToDictionary用法
ToDictionary其实可以简单化,可以传两个lambada表达式,第一个是Key,第二个就是Value. ToDictionary( key => key.Attribute(" ...
- Linux网络常用头文件说明
sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...