#缓存技术
- 全页面静态化
全页面静态化:页面全部生成为html静态页面,用户访问时直接访问静态页面,而不会去走php服务器解析的流程。
Ob_start(); //php默认开始缓存(可写可不写) 打开输出控制缓冲
Include 'tpl.php';
$content = Ob_get_contents(); //输出缓冲区的tpl.php文件
Ob_end_clean();
var_dump($content);
-
页面部分缓存(静态页面局部动态化)
页面局部缓存是将一个页面中不经常变的内容进行静态缓存,而经常变化的区域不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,或者ajax技术来实现; -
数据缓存 缓存文件
主要缓存数据信息,例如:商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次查看这个商品时,首先就直接调这个文件里面的数据信息,而不用再去数据库查询(缓存文件中缓存的就是一个php数组之类数据信息); -
内存式缓存(Memcache) cache cookie session
memcache是一种高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。
访问速度:磁盘 <内存 < 闪存
memcache获取数据原理:第一次访问先将需要的数据信息缓存到系统内存中,再次获取信息时,直接到内存中取;
<?php
$memcache=new Memcache();
//连接memcache
$link=$memcache->connect('127.0.0.1',11211);
if (!$link) {
exit('连接失败');
}
$memcache->set('name','ynw',0,3600);
$memcache->set('age',33,MEMCACHE_COMPRESSED,3600);
echo $memcache->get('name'),'<br/>';
$result=$memcache->get(array('name','age'));
var_dump($result);
?>
- 把数据缓存到Redis数据库(持久化 )
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对较多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
<?php
//Connecting to Redis server on localhost
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set("tutorial-name", "Redis tutorial");
?>