发一个PHP缓存类的原理
<?php
define(CACHE_ROOT, dirname(__FILE__)./cache); //缓存存放目录define(CACHE_TIME, 1800);//缓存时间 单位秒define(CACHE_FIX,.html);$CacheName=md5($_SERVER[REQUEST_URI]).CACHE_FIX; //缓存文件名$CacheDir=CACHE_ROOT./.substr($CacheName,0,1);//缓存文件存放目录$CacheUrl=$CacheDir./.$CacheName;//缓存文件的完整路径//GET方式请求才缓存,POST之后一般都希望看到最新的结果if($_SERVER[REQUEST_METHOD]==GET){//如果缓存文件存在,并且没有过期,就把它读出来。if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){$fp=fopen($CacheName,rb);fpassthru($fp);fclose($fp);exit;}//判断文件夹是否存在,不存在则创建elseif(!file_exists($CacheDir)){if(!file_exists(CACHE_ROOT)){mkdir(CACHE_ROOT,0777);chmod(CACHE_ROOT,0777);}mkdir($CacheDir,0777);chmod($CacheDir,0777);}//回调函数,当程序结束时自动调用此函数function AutoCache($contents){global $CacheUrl;$fp=fopen($CacheUrl,wb);fwrite($fp,$contents);fclose($fp);chmod($CacheUrl,0777);//生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。//DelOldCache();return $contents;}function DelOldCache(){chdir(CACHE_ROOT);foreach (glob("*/*".CACHE_FIX) as $file){if(time()-filemtime($file)>CACHE_TIME)unlink($file);}}//回调函数 auto_cacheob_start(AutoCache);}else{//不是GET的请求就删除缓存文件。if(file_exists($CacheUrl))unlink($CacheUrl);}?>
补充:Web开发 , php ,