浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理),浅析thinkphp
系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)
对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式。
'DATA_CACHE_SUBDIR'=>true
还可以设置哈希目录的层次,例如
'DATA_PATH_LEVEL'=>2
就可以根据缓存标识的哈希自动创建多层子目录来缓存。
S方法支持缓存有效期,在很多情况下,可能我们并不需要有效期的概念,或者使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法。F方法只能用于缓存简单数据类型,不支持有效期和缓存对象,使用如下:
//快速缓存Data数据,默认保存在DATA_PATH目录下面
F('data',$data);
//快速缓存Data数据,保存到指定的目录
F('data',$data,TEMP_PATH);
F('user/data',$data);
//删除缓存数据
F('data',null);
//获取缓存数据
$data=F('data');
配置文件config.php
//动态缓存,缓存文件存在于\Runtime\Temp
'DATA_CACHE_TYPE'=>'file',
'DATA_CACHE_TIME'=>'3600',
//'DATA_CACHE_SUBDIR'=>true,//开启子目录
//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次
Action文件:
function view(){ //缓存 //$cache=Cache::getInstance('缓存方式','缓存参数'); //$cache=Cache::getInstance('Xcache',array('expire'=>60)); //$cache->set('名字','值');或者$cache->name='值'; //$value=$cache->get('名字');或者$value=$cache->name; //$cache->rm('名字');或者unset($cache->name); //S('名字','数据','3600','类型')缓存快捷方法 $user=M('haodetong'); $value=S('list'); if(empty($value)){ $list=$user->select(); S('list',$list,3600); echo '这个是直接从数据库中读取的文件'; dump($list); }else{ echo '这个是缓存文件'; dump($value); } }
第一次访问时如下图:
再次刷新后如下图:
下面给大家单独介绍ThinkPHP 中F 方法的快速缓存
使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法
$path="../Public/Runtime/";
$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";
F("str/andy",$str,$path);
这样就把 $str 字符串这个内容放在了 ../Public/Runtime/str/andy.php 的文件中了
andy.php 的文件内容如下:
return 'asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa';
?>
下面一段代码是ThinkPHP缓存方法S()概述
thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法,使用示例如下:
代码如下:
复制代码 代码如下:
// 使用data标识缓存$Data数据
S('data',$Data); //前面的是缓存标示,后面的是缓存的数据
代码如下:
// 缓存$Data数据3600秒
S('data',$Data,3600);
代码如下:
复制代码 代码如下:
// 删除缓存数据
S('data',NULL); //第一个参数时缓存的标识名
代码如下:
$cache=S($cachename);//设置缓存标示 // 判断是否有这个查询缓存 if(!$cache){ //$cache 中是缓存的标示(每个查询都对应一个缓存 即 不同的查询有不同的缓存) $cache=$video->where($map)->order($order)->limit($limit)->select(); foreach($cache as $key=>$value){ $userlist=$user->where("id=".$value['user_id'])->find(); $cache[$key]["nickname"]=$userlist['nickname']; } S($cachename,$cache,3600); //设置缓存的生存时间 } S($cachename,NULL); //删除缓存

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구
