YII2.0框架(三) 缓存机制yiicachingCache
摘自:http://www.yiichina.com/doc/guide/2.0/caching-data
一、Yii 缓存机制
1.数据缓存$cache = new yiicachingFileCache(); //文件缓存
$key = "name";
$value = "value11111111111";
$duration = 100;
$data = [
["name" => "name"],
["value" => "value"]
];
$exists = $cache->exists($key); //检查指定的键是否存在缓存中
$buildKey = $cache->buildKey($key); //检查指定的键是否存在缓存中,超过32位使用MD5加密
$get = $cache->get($key); //从缓存中取得指定键的值
$set = $cache->set($key, $value, $duration); //将指定键的值存储在缓存中
$multiSet = $cache->multiSet($data, $duration); //将多条数据存在缓存中
$add = $cache->add($key, $value, $duration); //将多条数据存在缓存中
$delete = $cache->delete($key); //删除指定键值的数据
$flush = $cache->flush($key); //从缓存中删除所有数据
2.片段缓存
<?php
/*@var $this yiiwebView*/
$denpendency = [
"class" => "yiicachingFileDenpendency",
];
$key = "section";
$duration = 5;
$dependency = [ //文件缓存依赖
"class" => "yiicachingFileDenpendency",
];
$denpendency = [ //数据库查询缓存依赖
"calss" => "yiicachingDbDenpendency",
"sql" => "SELECT * FROM tb_admin",
];
if ($this->beginCache($key, ["duration" => $duration], ["dependency" => $dependency],
["variations" => Yii::$app->language])) {
echo "该页面数据缓存";
$this->endCache();
}
?>
3.页面缓存(服务器端缓存)
/**
* @desc 控制器行为
*/
public function behaviors()
{
return [
[
"class" => "yiifiltersPageCache", //页面缓存(服务器端缓存)
"only" => ["index"],
"duration" => 60,
"variations" => Yii::$app->language,
"dependency" => [
"class" => "yiicachingDbDependency",
"sql" => "SELECT * FROM tb_user",
]
],
];
}
4.HTTP缓存(客户端缓存)
/**
* @desc 控制器行为
*/
public function behaviors()
{
return [
[
"class" => "yiifiltersHttpCache", //http缓存(客户端缓存 )
"only" => ["input"],
/*Last-Modified 头使用时间戳标明页面自上次客户端缓存后是否被修改过。*/
"lastModified" => function($action, $params) {
$query = new yiidbQuery();
return strtotime($query->from("tb_admin")->max("created")); //当数据中最大时间改变,缓存失效
},
/*“Entity Tag”(实体标签,简称 ETag)使用一个哈希值表示页面内容。如果页面 被修改过,哈希值也会随之改变。通过对比客户端的哈希值和服务器端生成的哈 希值,浏览器就能判断页面是否被修改过,进而决定是否应该重新传输内容*/
"etagSeed" => function($action, $params) {
$post = $this->findModel(Yii::$app->request->get("id"));
return serialize([$post->title, $post->content]);
}
]
];
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。