第一次玩博客这玩意,以前没写过所以写的不好请多指教。
一个网站每天有几百万甚至上千次的点击量,但是每次查询的数据有时是相同的,若每次都调取数据库,会造成服务器压力过大。所以,可以将已经查询过并且短时间内不会更新的内容进行缓存,以便其他或同一用户再次访问时间,不用调取数据库;直接将缓存中的数据展示给用户。这样会减小服务器压力,使服务器能满足更多需求。
基本思路如下
(1)先是一个大的判断:缓存文件中是否有需要的数据内容或最后一次修改的时间距离现在小于,设定的间隔的有效时间;
(2)若不存在缓存文件或修改时间已经大于设定的有效时间,则需要在展示的同时重新在缓存文件中存入数据;
(3)存入数据。涉及到的函数:ob_start():开启内存缓存(说的那么神秘,就是缓存从这里开始);
$content= ob_get_contents():从内存缓存中获取页面代码(反正我是不明白啥意思,我只知道缓存的 内 容到这里结束);
$file= fopen(param1,param2):param1:文件位置;param2:打开模式,可用“r+”可读可写;
fwrite($file,$content):$content:为写入文件中的内容;
fclose($file):后三个函数配合使用。
也可以用file_put_contents(param1,param2):param1:为文件位置;param2:为内容;
下面是一个小的demo,供参考(echo 'ok'和echo 'no'为走哪一“路”的标志):
<?
$filename="cache.php";
$expire=20;
if(!file_exists($filename)||filemtime($filename)+$expire<time()){
ob_start(); //开启内存缓存
echo 'hello,php';
$content=ob_get_contents();//从内存缓存中获取页面代码
//将内容添加到缓存文件中
$file=fopen($filename,"r+");
fwrite($file,$content);
fclose($file);
//清掉内存缓存
ob_flush();
echo "no";
}else{
include($filename);
echo 'ok';
}
?>