使用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 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
php curl post 时出现的问题解决
Jan 30 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
php数组随机排序实现方法
Jun 13 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 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
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
php简单的上传类分享
2016/05/15 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
高二历史教学反思
2014/01/25 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
学校清明节活动总结
2014/07/04 职场文书
党校毕业心得体会
2014/09/13 职场文书
个人租房协议书样本
2014/10/01 职场文书
公司离职证明标准格式
2014/11/18 职场文书
七年级地理教学计划
2015/01/22 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL