欢迎来到天天文库
浏览记录
ID:39467258
大小:46.50 KB
页数:7页
时间:2019-07-04
《php页面缓存实现方法总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、php页面缓存实现方法总结在php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents(),但是更高级的缓存是不使用这些函数的,本文章最后一个实现就有讲到,大家可参考一下。ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~:)ob_e
2、nd_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。下面是编码部分。1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别ID是经加密的$_SERVER[REQUEST_URI]参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。代码如下复制代码functionpage_init(){$url=$_SERVER['
3、REQUEST_URI'];//子url,该参数一般是唯一的$pageid=md5($url);$dir=str_replace('/','_',substr($_SERVER['SCRIPT_NAME'],1,-4));//目录命名方式,如exp_indexif(!file_exists($pd=PAGE_PATH.$dir.'/'))@mkdir($pd,0777)ordie("$pd目录创建失败");//如cache/page/exp_index/define('PAGE_FILE',$pd.$pageid.'.html');
4、 //如cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html$contents=file_get_contents(PAGE_FILE);//读出if($contents&&substr($contents,13,10)>time())//对应page_cache()函数中加上的自定义头部{echosubstr($contents,27);exit(0);}returntrue;}2.页面缓存函数,这里使用到一个技巧:在缓存文件的内容中加上一个头部信息--过期时间,所以每
5、次只需要对头部中的过期时间和当前时间进行比较(在page_init()函数中进行)就能判断缓存是否过期了。代码如下复制代码functionpage_cache($ttl=0){$ttl=$ttl?$ttl:PAGE_TTL;//缓存时间,默认3600s$contents=ob_get_contents();//从缓存中获取内容$contents="n".$contents; //加上自定义头部:过期时间=生成时间+缓存时间file_put_contents(PAGE_
6、FILE,$contents);//写入缓存文件中ob_end_flush();//释放缓存} 3.函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start()代码如下复制代码例2下面做个示例来说明PHP页面缓存技术:代码如下复制代码
7、=$dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';$cachetime=$_time;ob_start();if(file_exists($cachefile)&&(time()-filemtime($cachefile)<$cachetime)){include($cachefile);ob_end_flush();exit;}}functioncache_end($dir){$cachefile=$dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html
8、';$fp=fopen($cachefile,'w');fwrite($fp,ob_get_contents());fclose($fp);ob_end_flush();}cache_start($_time,$dir)
此文档下载收益归作者所有