美工统筹SEO,为企业电子商务营销助力!
ThinkPHP完成静态缓存和静态缓存示例代码
一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-26 09:01:54 阅读数: 169
静态缓存
要操纵静态缓存功效,须要开启HTML_CACHE_ON参数,并且操纵HTML_CACHE_RULES设置装备摆设参数设置静态缓存法则文件。
界说静态法则
"HTML_CACHE_ON" => true, // 开启静态缓存"HTML_CACHE_TIME" => 60, // 全局静态缓存有用期(秒)"HTML_FILE_SUFFIX" => ".shtml", // 设置静态缓存文件后缀"HTML_CACHE_RULES" => array( // 界说静态缓存法则 // 界说格局1 数组体例 "静态地点" => array("静态法则", "有用期", "附加法则"), // 界说格局2 字符串体例 "静态地点" => "静态法则", )
静态缓存文件的根目次在HTML_PATH界说的途径上面,并且只要界说了静态法则的操纵才会停止静态缓存。 并且静态缓存撑持差别的存储范例。 静态缓存仅在GET要求上面有用。
静态地点
全局的操纵静态法则
"read"=>array("{id}",60)//界说一切的read操纵的静态法则
界说全局的节制器静态法则
"user:"=>array("User/{:action}_{id}","600")//界说一切的User节制器的静态法则
界说某个节制器的操纵的静态法则//界说Blog节制器的read操纵停止静态缓存
"blog:read"=>array("{id}",0)//参数为0表现永远缓存
界说全局的静态缓存法则
"*"=>array("{$_SERVER.REQUEST_URI|md5}")//这个属于特别环境下的操纵,任何模块的操纵都合用
静态法则
静态法则是用于界说要天生的静态文件的称号,静态法则的界说要确保不会抵触。
操纵体系变量
{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE{$_GET.name} {$_SERVER.REQUEST_URI|md5}
操纵框架自界说的变量复制代码 代码以下:{:module}/{:controller}_{:action}//{:module} 、{:controller} 和{:action}别离表现以后模块名、节制器名和操纵名。
操纵_GET变量
{var|function}//{id}实在等效于 {$_GET.id}
间接操纵函数
{|function}//{|time},time函数获得时辰后作为文件称号
夹杂界说
"{id},{name|md5}" //在{}以外的字符作为字符串看待,若是包罗有"/",会主动建立目次。{:module}/{:action}_{id}//会在静态目次上面建立模块称号的子目次,而后写入操纵名_id.shtml 文件。
静态缓存
[S体例数据缓存]
缓存初始化
S(array("type"=>"xcache","expire"=>60));
体系今朝已撑持的缓存范例包罗:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache。若是S体例不传入type参数初始化的话,则读取设置装备摆设文件中设置的DATA_CACHE_TYPE参数值作为默许范例。一样的事理,prefix参数若是不传入会读取设置装备摆设文件的DATA_CACHE_PREFIX参数值,expire参数不传入则读取DATA_CACHE_TIME设置装备摆设值作为默许。
对全局的缓存体例,普通咱们倡议增加prefix(缓存前缀)参数用以辨别差别的操纵,以避免混合。
设置缓存
数据缓存能够撑持缓存行列,简略的说便是能够限定缓存的数目,只须要在初始化的时辰指定length参数。
S("name",$value);S("name",$value,300);//缓存数据300秒S("name",$value,array("type"=>"file","expire"=>300));//转变之前的缓存体例或更多的参数S(array("type"=>"xcache","length"=>100,"expire"=>60));//体系只会缓存比来的100条缓存数据。
读取缓存
$value = S("name");//若是缓存标识不存在或已过时,则前往false,不然前往缓存值。
删除缓存
S("name",null);
注重:操纵每种缓存时,须要ThinkPHP加载对应的驱动文件,并设置好对应的设置装备摆设。
操纵实例
$user = M("User");$value = S("list");if (empty($value)) { $list = $user->select(); S("list", $list, 3600); echo "这个是间接从数据库中读取的文件"; dump($list);} else { echo "这个是缓存文件"; dump($value);}
[疾速缓存]
体系还供给了一个疾速缓存体例F能够用来更快的操纵,可是,F体例不有用期,F体例能够撑持差别的存储范例,若是是文件范例的话,默许保管在DATA_PATH目次上面。
疾速缓存Data数据
F("data",$Data);F("data",$Data,TEMP_PATH);//疾速缓存Data数据,保管到指定的目次F("User/data",$Data);//F体例撑持主动建立缓存子目次,在DATA_PATH目次上面缓存data数据,若是User子目次不存在,则主动建立。
获得缓存数据
$Data = F("data");
删除缓存数据
F("data",NULL);
[查问缓存]
查问缓存功效撑持一切的数据库,并且撑持一切的缓存体例和有用期。
在操纵查问缓存的时辰,只须要挪用Model类的cache体例。
$Model->cache(true)->where("status=1")->select();
若是操纵了cache(true),则在查问的同时会按照以后的查问前提等信息天生一个带有独一标识的查问缓存,若是指定了key的话,则间接天生称号为key的查问缓存。
$Model->cache("cache_name")->select();
默许环境下缓存体例接纳DATA_CACHE_TYPE参数设置的缓存体例(体系默许值为File表现接纳文件体例缓存),缓存有用期是DATA_CACHE_TIME参数设置的时辰,也能够零丁拟定查问缓存的缓存体例和有用期。
$Model->cache(true,60,"xcache")->select();
若是指定了查问缓存的key的话,则能够在内部经由过程S体例间接获得查问缓存的内容。
$value = S("cache_name");
除select体例以外,查问缓存还撑持find和getField体例,和他们的衍生体例(包罗统计查问和静态查问体例)。
$Model->where($map)->cache("key",60)->find();
本文首要来自官方文档,若有题目可参见ThinkPHP3.2官方文档-缓存
以上便是本文的全数内容,但愿对大师的进修有所赞助,也但愿大师多多撑持网页设想。
上一篇: php 操纵curl摹拟ip和来历停止拜候的完成体例 | 下一篇:php 函数操纵可变数目的参数体例