php页面缓存ob系列函数介绍

高洛峰
发布: 2016-12-01 14:45:00
原创
1687人浏览过

  php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents() 

  下面是编码部分。 

  1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别id是经加密的$_server[request_uri]参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。 

复制代码 代码如下: 
function page_init() 

$url = $_server['request_uri'];//子url,该参数一般是唯一的 
$pageid = md5($url); 
$dir = str_replace('/','_',substr($_server['script_name'],1,-4)); 
//目录命名方式,如exp_index 
if(!file_exists($pd = page_path.$dir.'/'))@mkdir($pd,0777) or die("$pd目录创建失败"); 
//如cache/page/exp_index/ 
define('page_file',$pd.$pageid.'.html'); 
  //如cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html 
$contents = file_get_contents(page_file);//读出 

if($contents && substr($contents, 13, 10) > time() )//对应page_cache()函数中加上的自定义头部 

echo substr($contents, 27); 
exit(0); 

return true; 



2.页面缓存函数,这里使用到一个技巧:在缓存文件的内容中加上一个头部信息--过期时间,所以每次只需要对头部中的过期时间和当前时间进行比较(在page_init()函数中进行)就能判断缓存是否过期了。 
复制代码 代码如下: 
function page_cache($ttl = 0) 

$ttl = $ttl ? $ttl : page_ttl;//缓存时间,默认3600s 
$contents = ob_get_contents();//从缓存中获取内容 
$contents = "<!--page_ttl:".(time() + $ttl)."-->\n".$contents; 
  //加上自定义头部:过期时间=生成时间+缓存时间 
file_put_contents(page_file, $contents);//写入缓存文件中 
ob_end_flush();//释放缓存 


3.函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start() 
复制代码 代码如下: 
<?php 
page_init();//页面缓存初始化 
ob_start();//开启缓存 

...//代码段 

page_cache(60);//一般是最后一行 

?> 

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号