我们已经准备好了,你呢?

2022我们与您携手共赢,为您的企业形象保驾护航!

PHP实现自动化缓存的功能,这个感觉不错,挺好用的,只需要直接把这个php文件引入到需要缓存的页面即可实现get请求的页面缓存;用着感觉不错就分享出来了;

console.log('".$file_name."');");

//缓存目录,根据md5的前两位把缓存文件分散开。避免文件过多。如果有必要,可以用第三四位为名,再加一层目录。
//256个目录每个目录1000个文件的话,就是25万个页面。两层目录的话就是65536*1000=六千五百万。
//不要让单个目录多于1000,以免影响性能。

$cache_dir = CACHE_ROOT.'/'.substr($file_name,0,2); 
$cache_file = $cache_dir.'/'.$file_name; //缓存文件存放路径

if($_SERVER['REQUEST_METHOD']=='GET'){ //GET方式请求才缓存,POST之后一般都希望看到最新的结果 
if(file_exists($cache_file) && time() - filemtime($cache_file) < CACHE_LIFE){ //如果缓存文件存在,并且没有过期,就把它读出来。
$fp = fopen($cache_file,'rb'); 
fpassthru($fp); 
fclose($fp); 
exit(); 
} 
elseif(!file_exists($cache_dir)){ 
if(!file_exists(CACHE_ROOT)){ 
mkdir(CACHE_ROOT,0777); 
chmod(CACHE_ROOT,0777); 
} 
mkdir($cache_dir,0777); 
chmod($cache_dir,0777); 
}

function auto_cache($contents){ //回调函数,当程序结束时自动调用此函数 
global $cache_file; 
$fp = fopen($cache_file,'wb'); 
fwrite($fp,$contents); 
fclose($fp); 
chmod($cache_file,0777); 
clean_old_cache(); //生成新缓存的同时,自动删除所有的老缓存。以节约空间。
return $contents; 
}

function clean_old_cache(){ 
chdir(CACHE_ROOT); 
foreach (glob("*/*".CACHE_SUFFIX) as $file){ 
if(time()-filemtime($file)>CACHE_LIFE){ 
unlink($file); 
} 
} 
}

ob_start('auto_cache'); //回调函数 auto_cache 
} 
else{ 
if(file_exists($cache_file)){ //file_exists() 函数检查文件或目录是否存在。
unlink($cache_file); //不是GET的请求就删除缓存文件。
} 
} 
?>

发表评论

评论列表

我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 19987729702,我们会详细为你一一解答你心中的疑难。项目经理在线
相关阅读
猜您喜欢

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

19987729702(同行勿扰)

上班时间

周一到周五

打开微信扫一扫
微信
线