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 ...
随机推荐
- poj1173 解题报告
poj1173 解题报告2013-07-21 13:31 by 期待 ., 42 阅读, 0 评论, 收藏, 编辑 http://poj.org/problem?id=1173 发现此题资料甚少,斗胆 ...
- Using CrunchBase API
Let us have fun with CrunchBase API. What can CrunchBase API give us? They said: https://developer.c ...
- 4605 Magic Ball Game
先离线记录所有询问,然后用dfs在线记录当前节点的所有父亲结点,父亲结点分为两类,一个从左边过来,一个从右边过来,分别开一个数组. 数据需要离散化,刚开始用lower_bound写,一直wa..,用二 ...
- TOGAF架构内容框架之内容元模型(下)
TOGAF架构内容框架之内容元模型(下) 2.2 治理扩展(Governance Extensions) 治理扩展元模型内容 治理扩展部分的意图在于引入额外的,并且与支持运营治理的目标和业务服务相关的 ...
- asp.net MVC 路由机制
1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ...
- [置顶] 安卓UI组件之ListView详解
ListView是很常见的一个UI组件,在许多App中都很常用,其意思就是可滚动的列表,使用ListView必须使用Adapter(适配器),常用的适配器友谊ArrayAdapter,SimpleAd ...
- Fragment与Activity交互(使用Handler)
1.在Activity中定义一个方法用来设置Handler对象 public void setHandler(Handler handler) {mHandler = handler;} 2.在Fra ...
- 理解git对象
1. 首次提交,提交一个简单的文件 a.txt ,commit 之后的图如下: 如图所示,生成了 3 个对象,一个 commit 对象,一个 tree 对象,一个 blob 对象.图上蓝底是 co ...
- React入门实例
前言 React 的核心思想是:封装组件,各个组件维护自己的状态和UI,当状态变更,自动重新渲染整个组件. 理解:react首先值得拍手称赞的是它所有的开发都基于一个组件(component),组件和 ...
- java 实现Excel压缩成Zip导出
1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...