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


Posted in PHP onOctober 18, 2012

这里有缓存技术的简单介绍:https://3water.com/article/4965.htm

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 文件上传进度条的两种实现方法的代码
Nov 25 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
php检测图片主要颜色的方法
Jul 01 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
CI框架数据库查询之join用法分析
May 18 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
php cc攻击代码与防范方法
Oct 18 #PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 #PHP
PHP中替换换行符的几种方法小结
Oct 15 #PHP
php变量范围介绍
Oct 15 #PHP
php模板函数 正则实现代码
Oct 15 #PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 #PHP
PHP获取文件后缀名的三个函数
Oct 15 #PHP
You might like
模拟xcopy的函数
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
php 获取全局变量的代码
2011/04/21 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
python中函数传参详解
2016/07/03 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python读取word文本操作详解
2018/01/22 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python实现换位加密算法的示例
2018/10/14 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
大专生简历的自我评价
2013/11/26 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
Python requests用法和django后台处理详解
2022/03/19 Python