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 ...
随机推荐
- iMac 无线键盘 无法配对
正好小编手里也有一个 Apple wireless keyboard 键盘,经测试发现确实有他所说的问题.在互联网上找了一圈儿都没找到解决方案,苹果官方也没有给出相关方案.只好自己琢磨,还好终于研究出 ...
- API接口服务端
<?php /** * API接口服务端 * * */ require 'mysql_class.php'; header('Content-Type:text/html;charset=utf ...
- 漫画研发之十二:该听谁的? 部门经理 or 项目经理
- [置顶] vs2008 编译adb 支持4.2 android 系统(改进版)
QQ: 2506314894 本想晚些时候放出来的,但是按捺不住啊,所以修改了之后就立即放出来了.先说明一下,这次用的adb 的源码比较新的,用的vs2008 编译出来,只有一个exe 文件,直接就可 ...
- 【实用技巧】去除BootStrap所有圆角效果
满屏的圆角有没有审"美"疲劳啊?教你一键去除所有圆角效果: * { -webkit-border-radius: 0 !important; -moz-border-radius: ...
- Docker 基础 : 网络配置
大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合.Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务.接下来我们将讲述 Docker ...
- 【转】UWP 捕获全局异常
转自:http://www.cnblogs.com/youngytj/p/4749004.html 异步(async)方法中的异常无法被App的UnhandledException捕获的问题 这是一个 ...
- WebADI应用到Office 2016 64-bit
升级后的用户环境: Windows 2016 bit Office 2016 64 bit IE 11 64 bit 功能定义 功能:CUX_LINE_IMP_ADI 类型:SSWA servlet ...
- C#Redis列表List
一.前戏 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis将 ...
- 数据结构之Binary Search Tree (Java)
二叉查找树简介 二叉查找树(Binary Search Tree), 也成二叉搜索树.有序二叉树(ordered binary tree).排序二叉树(sorted binary tree), 是指一 ...