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优于Node.js的五大理由分享
Sep 15 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
php5与php7的区别点总结
Oct 11 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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
function.inc.php超越php
2006/12/09 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
综合实践教学反思
2014/01/31 职场文书
违纪检讨书2000字
2014/02/08 职场文书
《胡杨》教学反思
2014/02/16 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
图书馆标语
2014/06/19 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
颐和园导游词
2015/01/30 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
自我推荐信怎么写
2015/03/24 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书