使用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下使用无限生命期Session的方法
Mar 16 PHP
PHP中ADODB类详解
Mar 25 PHP
PHP程序员编程注意事项
Apr 10 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP实现文件上传下载实例
Oct 18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 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非常实用的功能
2015/09/29 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Python的IDEL增加清屏功能实例
2017/06/19 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
Python中的TCP socket写法示例
2018/05/11 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python实现视频分帧效果
2019/05/31 Python
简单了解python变量的作用域
2019/07/30 Python
django ajax发送post请求的两种方法
2020/01/05 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
历史专业个人求职信范文
2013/12/07 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
保密普查工作实施方案
2014/02/25 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
群众路线调研报告范文
2014/11/03 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2014年女职工工作总结
2014/11/27 职场文书
数学备课组工作总结
2015/08/12 职场文书
2016特色励志班级口号
2015/12/24 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS