以下黄字是我用的代码:

//设置缓存名为zgg,内容为zongguagua,有效时间60秒

cache('zgg',"zongguagua",60);

//读取缓存

if(cache('zgg')){
echo cache('zgg');
}else{
echo '已经失效';
}

另一种写法

//设置缓存类型为File,有效时间60秒,缓存类型有很多比如什么xcacha什么的,似乎还要装插件,现在用的不需要

cache(array('type'=>'File','expire'=>60));
cache('zgg',"zongguagua");

//读取缓存

if(cache('zgg')){
echo cache('zgg');
}else{
echo '已经失效';
}

下面是摘抄的内容

在项目中,合理的使用缓存对性能有较大的帮助。ThinkPHP提供了方便的缓存方式,包括数据缓存、静态缓存和查询缓存等,支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在内的动态数据缓存类型,以及可定制的静态缓存规则,并提供了快捷方法进行存取操作。

数据缓存

在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,3.1版本推荐的数据缓存方法是cache方法,基本的用法是:
3.1.2版本cache方法已经并入S方法,所以cache方法不再建议使用,直接使用S方法即可,和下文描述的cache方法用法一致

1 缓存初始化

  1. cache(array('type'=>'xcache','expire'=>60));
复制代码

缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:

expire 缓存有效期(时间为秒)
prefix 缓存标识前缀
type 缓存类型

核心版本只有File缓存方式的支持,其他的缓存方式支持需要下载单独的缓存驱动,并放入系统目录的Extend/Driver/Cache/下面,否则会出现不支持缓存类型的错误提示。

有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:

  1. cache(array('type'=>'memcache','host'=>'192.168.1.10','port'=>'11211','prefix'=>'think','expire'=>60));
复制代码

对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。

2 缓存设置

  1. cache('a',$value);
复制代码

会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如:

  1. cache('a',$value,300);// 缓存数据300秒
复制代码

甚至改变之前的缓存方式或者更多的参数:

  1. cache('a',$value,array('type'=>'file','expire'=>300));// 采用文件方式缓存数据300秒
复制代码

如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。

3 缓存读取

  1. $value = cache('a');
复制代码

缓存读取的是前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。
如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。

4 缓存删除

  1. cache('a',null);
复制代码

删除缓存标识为name的缓存数据。

如果要切换缓存方式,可以再次进行缓存初始化操作或者使用下面的方式:

  1. $cache = cache(array('type'=>'xcache','prefix'=>'think','expire'=>600));
  2. $cache->name = 'value'; // 设置缓存
  3. $value = $cache->name; // 获取缓存
  4. unset($cache->name); // 删除缓存
复制代码

如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存。
数据缓存可以支持缓存队列,简单的说就是可以限制缓存的数量,只需要在初始化的时候指定length参数:

  1. cache(array('type'=>'xcache','length'=>100,'expire'=>60));
复制代码

设置了length参数后,系统只会缓存最近的100条缓存数据。

快速缓存

如果你仅仅是希望用文件的方式缓存一些简单的数据,并且没有有效期的概念,那么系统还提供了一个快速缓存方法F可以用来更快的操作。
快速缓存Data数据,默认保存在DATA_PATH目录下面

  1. F('data',$Data);
复制代码

快速缓存Data数据,保存到指定的目录

  1. F('data',$Data,TEMP_PATH);
复制代码

获取缓存数据

  1. $Data = F('data');
复制代码

删除缓存数据

  1. F('data',NULL);
复制代码

F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User子目录不存在,则自动创建:

  1. F('User/data',$Data);
复制代码

3.1.2版本开始F方法支持使用通配符批量删除功能,使用如下:

  1. F('User/*',NULL);
复制代码

表示删除DATA_PATH.'User/'目录下面的数据缓存。
系统内置的数据字段信息缓存就是用了快速缓存机制。

查询缓存

对于及时性要求不高的数据查询,我们可以使用查询缓存功能来提高性能,而且无需自己使用缓存方法进行缓存和获取。
查询缓存功能支持所有的数据库,并且支持所有的缓存方式和有效期。
在使用查询缓存的时候,只需要调用Model类的cache方法,例如:

  1. $Model->cache(true)->select();
复制代码

如果使用了cache(true) ,则在查询的同时会根据当前的查询SQL生成查询缓存,默认情况下缓存方式采用DATA_CACHE_TYPE参数设置的缓存方式(系统默认值为File表示采用文件方式缓存),缓存有效期是DATA_CACHE_TIME 参数设置的时间,也可以单独制定查询缓存的缓存方式和有效期:

  1. $Model->cache(true,60,'xcache')->select();
复制代码

表示当前查询缓存的缓存方式为xcache,并且缓存有效期为60秒。
同样的查询,如果没有使用cache方法,则不会获取或者生成任何缓存,即便是之前调用过Cache方法。
查询缓存只是供内部调用,如果希望查询缓存开放给其他程序调用,可以指定查询缓存的Key,例如:

  1. $Model->cache('cache_name',60)->select();
复制代码

则可以在外部通过S方法直接获取查询缓存的内容,

  1. $value = S('cache_name');
复制代码

除了select方法之外,查询缓存还支持find和getField方法,以及他们的衍生方法(包括统计查询和动态查询方法)。具体应用的时候可以根据需要选择缓存方式和缓存有效期。

静态缓存

要使用静态缓存功能,需要开启HTML_CACHE_ON 参数,并且使用HTML_CACHE_RULES配置参数设置静态缓存规则文件 。
静态规则的定义方式如下:

  1. 'HTML_CACHE_ON'=>true, // 开启静态缓存
  2. 'HTML_FILE_SUFFIX'  =>  '.shtml', // 设置静态缓存后缀为.shtml
  3. 'HTML_CACHE_RULES'=> array(
  4. 'ActionName(小写)'            => array('静态规则', '静态缓存有效期', '附加规则'),
  5. 'ModuleName(小写)'            => array('静态规则', '静态缓存有效期', '附加规则'),
  6. 'ModuleName(小写):ActionName(小写)' => array('静态规则', '静态缓存有效期', '附加规则'),
  7. '*'                     => array('静态规则', '静态缓存有效期', '附加规则'),
  8. //…更多操作的静态规则
  9. )
复制代码

静态缓存文件的根目录在HTML_PATH 定义的路径下面,并且只有定义了静态规则的操作才会进行静态缓存。
第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为:

  1. 'read'=>array('{id}','60')
复制代码

其中,{id} 表示取$_GET['id'] 为静态缓存文件名,第二个参数表示缓存60秒
第二种是定义全局的模块静态规则,例如定义所有的User模块的静态规则为:

  1. 'user:'=>array('User/{:action}_{id}','600')
复制代码

其中,{:action} 表示当前的操作名称
第三种是定义某个模块的操作的静态规则,例如,我们需要定义Blog模块的read操作进行静态缓存

  1. 'blog:read'=>array('{id}',0)
复制代码

有个别特殊的规则,例如空模块和空操作的静态规则的定义,可以使用下面的方式:

  1. 'empty:index'=>array('{:module}_{:action}',0)  // 定义空模块的静态规则
  2. 'User:_empty'=>array('User/{:action}',0)  // 定义空操作的静态规则
复制代码

第四种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如

  1. '*'=>array('{$_SERVER.REQUEST_URI|md5}'),
复制代码

根据当前的URL进行缓存

静态规则是用于定义要生成的静态文件的名称,静态规则的定义要确保不会冲突,写法可以包括以下情况:
1、使用系统变量 包括 _GET _REQUEST _SERVER _SESSION _COOKIE
格式:
{$_×××|function}

例如:

  1. {$_GET.name}
  2. {$_SERVER. REQUEST_URI|md5}
复制代码

2、使用框架特定的变量
例如:{:app}、{:group} 、{:module} 和{:action} 分别表示当前项目名、分组名、模块名和操作名。

3、使用_GET变量
{var|function} 也就是说 {id} 其实等效于 {$_GET.id}

4、直接使用函数
{|function} 例如:

  1. {|time}
复制代码

5、支持混合定义,例如我们可以定义一个静态规则为:

  1. '{id},{name|md5}'
复制代码

在{}之外的字符作为字符串对待,如果包含有”/”,会自动创建目录。
例如,定义下面的静态规则:

  1. {:module}/{:action}_{id}
复制代码

则会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。
静态有效时间 单位为秒。如果不定义,则会获取配置参数HTML_CACHE_TIME 的设置值,如果定义为0则表示永久缓存。
附加规则通常用于对静态规则进行函数运算,例如

  1. 'read'=>array('Think{id},{name}','60', 'md5')
复制代码

翻译后的静态规则是 md5('Think'.$_GET['id']. ', '.$_GET['name']);
和静态缓存相关的配置参数包括:

  1. HTML_CACHE_ON 是否开启静态缓存功能
  2. HTML_FILE_SUFFIX 静态文件后缀 惯例配置的值是 .html
  3. HTML_CACHE_TIME 默认的静态缓存有效期 默认60秒 可以在静态规则定义覆盖
复制代码

总结

要善于利用ThinkPHP的缓存功能,更重要的是区分什么时候用何种缓存方式更加有效。缓存也不是万能的,没有缓存是万万不能的^_^

thinkphp3.1 缓存配置设置读取的更多相关文章

  1. uni-app同步缓存值 设置 读取 删除

    A页面 <view class="go-to-tab" @tap="gotologin"> 去login页面 </view> msg : ...

  2. thinkphp3.2开启静态缓存与缓存规则设置

    网站的静态缓存对大访问量有很好的缓解作用,尤其对网站的大并发,可有效的缓解数据库的压力.在thinkphp中实现静态缓存很简单,thinkphp都已经封装好了直接调用即可. 静态缓存   首先设置 H ...

  3. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  4. nginx缓存配置的操作记录梳理

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...

  5. Hibernate缓存配置

    一级缓存 Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法 及调用查询接口l ...

  6. Hibernate二级缓存简述及基于Spring4,Hibernate5,Ehcache3的二级缓存配置

    Hibernate L2缓存 缓存的分类 L2缓存工作原理 放入二级缓存的数据 Ehcache 依赖 ehcache.xml 常用的memoryStoreEvictionPolicy(缓存算法) eh ...

  7. Hibernate 二级缓存配置

    详见:https://www.cnblogs.com/Junsept/p/7324981.html Hibernate的cache管理: Cache就是缓存,它往往是提高系统性能的最重要手段,对数据起 ...

  8. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  9. nginx缓存配置及开启gzip压缩

    阅读目录 一:nginx缓存配置 二:nginx开启gzip 回到顶部 一:nginx缓存配置 在前一篇文章,我们理解过http缓存相关的知识点, 请看这篇文章. 今天我们来学习下使用nginx服务来 ...

随机推荐

  1. 13.AxisUtil

    1. package com.glodon.gspm.adapter.plugin.common; import lombok.SneakyThrows; import org.apache.axis ...

  2. Vue的学习--环境配置

    1.  下载vue.min.js或者使用CDN 2.  安装Vue-cli环境 我在window7 32位下使用命令行cmd进行的操作 安装之前应该使用node -v和npm -v检查一下node和n ...

  3. jsp+tomcat+ 创建project 配置project

    *如今我们已经下载到了 tomcat 7.0+ eclipse for java ee 直接解压,打开eclipse. 接下来是步骤: eclipse 打开的界面.空空如也 ! ..* 点击 file ...

  4. [Angular] Use :host-context and the ::ng-deep selector to apply context-based styling

    If you want to style host component. You can use ':host-context'. // host @Component({ selector: 'my ...

  5. Python基础教程之第1章 基础知识

    #1.1 安装Python #1.1.1 Windows #1.1.2 Linux和UNIX #1.1.3 Macintosh #1.1.4 其它公布版 #1.1.5 时常关注.保持更新 #1.2 交 ...

  6. linux又一次编译安装gd,添加freetype支持,解决验证码不显示问题,Fatal error: Call to undefined function imagettftext()

    问题: Fatal error: Call to undefined function Think\imagettftext() in /var/www/webreg/ThinkPHP/Library ...

  7. Android睡眠唤醒机制--Kernel态

    一.简介 Android系统中定义了几种低功耗状态:earlysuspend.suspend.hibernation.       1) earlysuspend: 是一种低功耗的状态,某些设备可以选 ...

  8. Android 利用代码在屏幕中间位置显示ProgressDialog和ProgressBar

    package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravity; import android ...

  9. upf用到的工具

    emulator          : PXP zebu simulator :

  10. 【CS Round #43 B】Rectangle Partition

    [链接]https://csacademy.com/contest/round-43/task/rectangle-partition/ [题意] 水题 [题解] 横着过去,把相邻的边的宽记录下来. ...