php页面缓存

  这几天接触了phpcms的页面缓存,有些感触。其好处就不多说了,它一般是用在数据库查询较多的页面中,对于插入修改删除的页面就不大合适了。

  这里有缓存技术的简单介绍:http://www.cnblogs.com/penghcn/articles/2720202.html

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

  下面是编码部分。

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

 1 function page_init()
 2 {    
 3     $url = $_SERVER['REQUEST_URI'];//子url,该参数一般是唯一的
 4     $pageid = md5($url);
 5     $dir = str_replace('/','_',substr($_SERVER['SCRIPT_NAME'],1,-4));
 6         //目录命名方式,如exp_index
 7     if(!file_exists($pd = PAGE_PATH.$dir.'/'))@mkdir($pd,0777) or die("$pd目录创建失败");
 8         //如cache/page/exp_index/
 9     define('PAGE_FILE',$pd.$pageid.'.html');
10       //如cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html
11     $contents = file_get_contents(PAGE_FILE);//读出
12 
13     if($contents && substr($contents, 13, 10) > time() )//对应page_cache()函数中加上的自定义头部
14     {
15         echo substr($contents, 27);
16         exit(0);
17     }
18     return true;    
19 }        

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

1 function page_cache($ttl = 0)
2 {    
3     $ttl = $ttl ? $ttl : PAGE_TTL;//缓存时间,默认3600s
4     $contents = ob_get_contents();//从缓存中获取内容
5     $contents = "<!--page_ttl:".(time() + $ttl)."-->\n".$contents;
6       //加上自定义头部:过期时间=生成时间+缓存时间
7     file_put_contents(PAGE_FILE, $contents);//写入缓存文件中
8     ob_end_flush();//释放缓存
9 }    

  3.函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start()

1 <?php
2      page_init();//页面缓存初始化
3      ob_start();//开启缓存        
4  
5      ...//代码段
6  
7      page_cache(60);//一般是最后一行
8  
9  ?>

转载于:https://www.cnblogs.com/penghcn/archive/2012/10/15/2724279.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《画解算法》1.两数之和【python实现】

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;…

工业AI时代,大数据云平台未来5年迎最佳发展时机

来源&#xff1a;专知摘要&#xff1a;继德国工业 4.0 的提出&#xff0c;中国也确立了“中国制造 2025”的目标&#xff0c;工业 4.0 及物联网的概念在中国大地上遍地开花&#xff0c;整个行业也是红红火火。从工业大数据到智能制造&#xff0c;工业大数据云平台将为工业创新和…

噪音 - Perlin Noise

转载自&#xff1a;http://www.cnblogs.com/babyrender/archive/2008/10/27/BabyRender.html 说起perlin noise, 最初也就是在课上大概了解了一下, 知道是个生成仿真贴图的东西. 学的时候没怎么细想, 只是知道这个东西很快. 生成3d贴图很方便. 不过最近在做sampling的时候, 发现…

《画解算法》2.整数反转【python-简单】

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;…

360:中国为什么没有自主研发的浏览器内核?

来源&#xff1a;360公司物联网智库 整理发布摘要&#xff1a;近日360公司发表题为《中国为什么没有自主研发的浏览器内核&#xff1f;》的文章&#xff0c;文章中写道&#xff1a;从0到1&#xff0c;从无到有&#xff0c;这是很多人理解的自主研发&#xff0c;按这个标准&…

用 WebClient 轻松实现文件下载上传、网页抓取

我们知道用 WebRequest&#xff08;HttpWebRequest、FtpWebRequest&#xff09; 和 WebResponse&#xff08;HttpWebResponse、FtpWebResponse&#xff09;可以实现文件下载上传、网页抓取&#xff0c;可是用 WebClient 更轻松。用 DownloadFile 下载网页using (System.Net.Web…

❤️ 炒 股 实 战丨原 地 起 飞 ❤️

郑重声明&#xff1a; 1、个人版可以免费获取交易数据进行分析&#xff0c;企业级大规模调用数据需要购买积分&#xff08;大家玩玩即可&#xff09; 2、为避免广告代言&#xff0c;本文将不会出现任何logo、链接和包&#xff0c;需要玩的主页私聊我&#xff01; &#x1f345…

人工智能研究的新前线:生成式对抗网络

林懿伦, 戴星原, 李力, 王晓, 王飞跃来源&#xff1a;科学网 摘要&#xff1a;生成式对抗网络&#xff08;Generative adversarial networks, GAN&#xff09;是当前人工智能学界最为重要的研究热点之一。其突出的生成能力不仅可用于生成各类图像和自然语言数据&#xff0c;还启…

WP7开发小技巧之快捷键

开发 Windows Phone 7 应用程式&#xff0c;开启用键盘输入的密技 1. 启用键盘输入 在模拟器里调试程序时&#xff0c;默认情况下是不能用电脑的键盘输入&#xff0c;但是调试如果能用PC键盘肯定能提高不少速度。其实微软已经为我们程序员做了这方面的工作&#xff0c;可以按如…

1.MySQL数据库的介绍

1.MySQL数据库的介绍 什么是数据库 数据库(Database)就是按照数据结构来组织&#xff0c;存储和管理数据的仓库 专业的数据库是专门对数据进行创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索等操作的软件&#xff0c;比起我们自己用文件读写的方式对象数据进行管理更…

中国自动化学会平行智能专业委员会成立

摘要&#xff1a;2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。中国科学院院士吴宏鑫教…

蚂蚁的天堂

当今各个社区都轰轰烈烈的展开灭蚁运动时&#xff0c;我却任由蚂蚁在窗台的花盆里做窝&#xff0c;看着它们辛勤的在高大植物的根茎上劳作&#xff0c;时不时的还帮我灭掉了植物上害虫的幼卵&#xff0c;我就很高兴有这么一群邻居&#xff0c;时不时的还送写肉碎过来&#xff0…

2008-2018,5个版本互联网大脑模型的演进与对比

2018年8月&#xff0c;我们绘制的第五个版本的互联网大脑模型图&#xff0c;新的版本相当于为互联网找到了左右大脑的机制-机器智能左大脑和群体智能右大脑。第五版的绘制距离2008年第一个版本正好10年。互联网大脑模型主要是针对1969年以来互联网的网状模型&#xff0c;在21世…

2.安装MySQL

2.安装MySQL Mac系统中安装MySQL 使⽤用Mac中的Homebrew进⾏行行mysql的安装 1.下载安装mysql brew install mysql5.7 如果看到以下界⾯面则表示已经下载安装成功 2.启动mysql mysql.server start 3.关闭mysql mysql.server stop 4.登录mysql mysql -u root -p Windows安…

正则判断字符串是否为数字

var re /^(-?\d)(\.\d)?$/; //判断字符串是否为数字 var re/^[A-Za-z0-9]$/; //字母和数字组合转载于:https://www.cnblogs.com/peterdys/archive/2012/10/19/2731502.html

3.认识和操作一下mysql的基本命令

3.认识和操作一下mysql的基本命令 登录mysql,在终端输入以下命令&#xff0c;进行登录 mysql -u root -pMacBook-Pro:~ yc$ mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.7.28…

CNNIC互联网报告:中国网民超8亿 前沿科技进展显著

来源&#xff1a;新浪摘要&#xff1a;8月20日下午消息&#xff0c;中国互联网络信息中心(CNNIC)在京发布第42次《中国互联网络发展状况统计报告》。根据报告&#xff0c;截至2018年6月30日&#xff0c;我国网民规模达8.02亿&#xff0c;普及率为57.7%;手机网民规模达7.88亿&am…

以前看过一个压缩过的.exe,运行会播放长达半小时的动画,却只有60KB,个人认为其中的原理...

以前看过一个压缩过的.exe&#xff0c;运行会播放长达半小时的动画&#xff0c;而不重复&#xff0c;文件大小却只有60KB&#xff0c;个人认为其中的原理 1.主原理&#xff1a;该动画必是根据规则&#xff08;即公式&#xff09;生成的 2.启动时&#xff0c;根据公式&#xff0…

4.MySQL基础操作

4.MySQL基础操作 使用方法: 方式一: 通过在命令行敲命令来操作 ( 有助于命令的掌握)方式二: 通过图型界面工具,如 Navicat 等(在熟练掌握后再使用)方式三:通过编程语言(python,php,java,go...)执行mysql命令 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个…

OE模块常用表结构

so_headers_all&#xff1b;so_lines_all&#xff1b; 表名:ONT.OE_order_headers_all 说明:订单头 HEADER_ID NUMBER 订单头标识码 ORG_ID NUMBER OU ID ORDER_TYPE_ID NUMBER 订单类型ID ORDER_NUMBER NUMBER 订单编号 ORDERED_DATE DATE 定购日期 REQUEST_DATE DATE 客户要求…