




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
php页面缓存实现方法总结在php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents(),但是更高级的缓存是不使用这些函数的,本文章最后一个实现就有讲到,大家可参考一下。ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以 :)ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。下面是编码部分。1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别ID是经加密的$_SERVERREQUEST_URI参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。 代码如下复制代码function page_init() $url = $_SERVERREQUEST_URI;/子url,该参数一般是唯一的 $pageid = md5($url); $dir = str_replace(/,_,substr($_SERVERSCRIPT_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 = n.$contents; /加上自定义头部:过期时间=生成时间+缓存时间 file_put_contents(PAGE_FILE, $contents);/写入缓存文件中 ob_end_flush();/释放缓存 3.函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start() 代码如下复制代码例2下面做个示例来说明PHP页面缓存技术: 代码如下复制代码?php$_time =10;$dir=D:php;function cache_start($_time, $dir) $cachefile = $dir./.sha1($_SERVERREQUEST_URI).html; $cachetime = $_time; ob_start(); if(file_exists($cachefile) & (time()-filemtime($cachefile) $cachetime) include($cachefile); ob_end_flush(); exit; function cache_end($dir) $cachefile = $dir./.sha1($_SERVERREQUEST_URI).html; $fp = fopen($cachefile, w); fwrite($fp, ob_get_contents(); fclose($fp); ob_end_flush();cache_start($_time, $dir);/以下是输出的内容,放在cache_start和cache_end两个方法之间for ($i=0;$i例利用生成文件做缓存 代码如下复制代码read_cache() 读取缓存并输出* example $cache-creatre_cache() 创建缓存文件(放在文件未尾)* example $cache-list_file() 返回所有缓存文件列表* example $cache-del_file() 删除所有缓存文件*/class Esj_Cacheprivate $cache_folder=null;/cacher文件夹private $wroot_dir=null;/站点目录private $cacher_create_time=null;/cacher文件的建立时间public function _construct($cache_foldername,$cacher_time=100)ob_start();$this-wroot_dir=$_SERVERDOCUMENT_ROOT;$this-cache_folder=$cache_foldername;$this-cacher_create_time=$cacher_time;public function read_cache()try if(self:create_folder($this-cache_folder)self:get_cache();/输出缓存文件信息elseecho 缓存文件夹创建失败!;return false;catch(Exception $e)echo $e;return false;/测试缓存文件夹是否存在private function exist_folder($foler)if(file_exists($this-wroot_dir./.$foler)return true;else return false;/建立一个新的文件夹private function create_folder($foler)if(!self:exist_folder($foler)trymkdir($this-wroot_dir./.$foler,0777);chmod($this-wroot_dir./.$foler,0777);return true;catch (Exception $e)self:get_cache();/输出缓存return false;return false;elsereturn true;/读取缓存文件private function get_cache()$file_name=self:get_filename();if (file_exists($file_name)&(filemtime($file_name)+$this-cacher_create_time) time()$content=file_get_contents($file_name);if($content)echo $content;ob_end_flush();exit;elseecho 文件读取失败;exit;/返回文件的名字private function get_filename()$filename=$file_name=$this-wroot_dir./.$this-cache_folder./.md5($_SERVERQUERY_STRING).html;return $filename;/建立缓存文件public function create_cache()$filename=self:get_filename();if($filename!=)tryfile_put_contents($filename,ob_get_contents();return true;catch (Exception $e)echo 写缓存失败:.$e;exit();return true;/ 取得缓存中的所有文件public function list_file()$path=$this-cache_folder;if ($handle = endir($path) while (false != ($file = readdir($handle) if($file!=. & $file!=.) $path1=$path./.$file;if(file_exists($path1)$result=$file;closedir($handle);return $result;/删除缓存中的所有文件public function del_file()$path=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年微滴灌施肥装置项目发展计划
- 2025年放射性核素遥控后装机项目建议书
- 2025年证券经纪代理与营业部服务项目发展计划
- 抗生妇产科素使用课件
- 2025年海南省澄迈县中考数学模拟试卷(二)(含答案)
- 2025年汽车轮胎压力监测系统合作协议书
- 2025年青马班考试题目及答案
- 2025年毕节地区考试试卷及答案
- 2025年设备能源考试题型及答案
- 慢性肉芽肿性疾病
- 新版外研社小学英语三起点四年级下册全册教案
- 颅脑外伤所致精神障碍护理查房
- 学生心理健康一生一策档案表
- 工程施工队伍管理制度
- 2025年室内设计师劳动雇佣合同范文
- 2025睿实消防自动跟踪定位射流灭火系统说明书
- 《数字技术应用 基础模块(WPS Office 上册)》 课件全套 第1-3单元 探索数字世界 数字技术应用基础 -编程的魅力 程序设计入门
- 餐饮服务与数字化运营 习题及答案 项目二
- 2025-2030全球卫星星座行业调研及趋势分析报告
- 成人失禁相关性皮炎的预防与护理课件
- 鼻的症状学相关知识
评论
0/150
提交评论