缓存的作用就是减少对数据的处理,增加网站的性能。适用于非实时需求的数据。
课件内容:
一、页面缓存
新闻类的 很少会更新的内容
将整个页面缓存起来 html静态页
<?php
ob_start();
echo "Hello World";
$out1 = ob_get_contents();
ob_end_flush();
file_put_contents("ob.html",$out1);
ob_start();
$content=ob_get_contents();
ob_end_clean();
?>
二、数据缓存 php中
局部的缓存 不经常变得数据
缓存结构 key value expire
使用文件存储缓存
使用数据库存储缓存
cache表 k v expire
使用内存软件存储缓存
memcache
memcache
memcached 更丰富
redis 必学的
phpredis c扩展
Predis php扩展
<?php
cache::set("a","1");
echo cache::get("a");
$mem=new memcache();
$mem->connect('localhost', 11211);
$mem->set("aa","aa",0,30);
echo $mem->get("aa");
$redis=new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set("rk","redis缓存",30);
echo $redis->get("rk");
class cache{
public static $dir="cache";
public static function set($k,$v,$expire=12345678){
$md5=md5($k);//有可能会冲突
//md5值切割成目录a/b/c/$k
$content=serialize(array(
"value"=>$v,
"expire"=>time()+$expire
));
file_put_contents(self::$dir."/".$k,$content);
}
public static function get($k){
$md5=md5($k);
if(!file_exists(self::$dir."/".$k)){
return false;
}
$c=file_get_contents(self::$dir."/".$k);
$arr=unserialize($c);
if($arr["expire"]<time()){
return false;
}
return $arr["value"];
}
}
?>
三、代码编译缓存
将php编译后的代码缓存
opcache