使用ob系列函数实现PHP网站页面静态化


Posted in PHP onAugust 13, 2014

将PHP的执行页面预先转换成HTML,是所谓的PHP静态化方法之一。

其他还有模板替换法,opcache等方法。

静态化的作用:

提高网站的响应速度,降低服务器的负载;
用于搜索引擎的SEO;
利用PHP输出buffer直接写成html,定时后台定时扫一遍网站,是比较容易实现的网页静态化。

静态化之前:

<?php
for($i=0;$i<1000;$i++){
 echo "bull<br>";
}
?>

静态化:

<?php
ob_start();
for($i=0;$i<1000;$i++){
 echo "bull<br>";
}
$str = ob_get_contents();
ob_end_clean();
$fp = fopen("test.html","w");
fwrite($fp,$str);
fclose($fp);
echo "<div>success write</div>";
?>

该段代码就会预先形成一个test.html,说白了其实就是用空间换取时间,像新闻类网站,发布的内容基本上写完是不会变了,比较适合静态化成html。

用户访问的时候就direct到这个html页面上就可以了。

简单的用apache benchmark测试一下效果:

ab.exe -n1000 -c10

使用ob系列函数实现PHP网站页面静态化

两者在90%以上的连接中,至少相差150ms。相对于复杂的php来说,html节约下来的运算量还是不少的。

另附相关函数简介

1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!

7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()。

PHP 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
php debug 安装技巧
Apr 30 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php常用数学函数汇总
Nov 21 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
php查询操作实现投票功能
May 09 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
PHP语法自动检查的Vim插件
Aug 11 #PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 #PHP
Parse正式发布开源PHP SDK
Aug 11 #PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 #PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 #PHP
php向js函数传参的几种方法
Aug 10 #PHP
本地计算机无法启动Apache故障处理
Aug 08 #PHP
You might like
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python解析多层json操作示例
2019/12/30 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
艺术系应届生的自我评价
2013/10/19 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
呐喊读书笔记
2015/06/30 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis