• 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模块,不过我还没有研究,后续再补上吧。

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

  • 相关阅读:
    判断是否启用缓存,启用后直读缓存信息
    XPath注入跟SQL注入差不多,只不过这里的数据库走的xml格式
    bool型变量下标的时候javascript是不能允许的
    SQL服务器在执行这条语句时会先进行运算然后执行
    secureCRT常见命令
    Linux常用命令之链接命令和权限管理命令
    Linux常用命令之文件和目录处理命令
    linux:终端常用命令 + vi命令修改文件及保存 方法
    linux读书笔记1
    Linux各目录及每个目录的详细介绍
  • 原文地址:https://www.cnblogs.com/zjfblog/p/6290487.html
Copyright © 2020-2023  润新知