使用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 相关文章推荐
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
一个PHP并发访问实例代码
Sep 06 PHP
10 个经典PHP函数
Oct 17 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 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快递单号查询接口使用示例
2014/05/05 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
Python获取文件ssdeep值的方法
2014/10/05 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
python 异常处理总结
2016/10/18 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python3实现名片管理系统
2020/11/29 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
python反转列表的三种方式解析
2019/11/08 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
三年大学自我鉴定
2014/01/16 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
先进教师事迹材料
2014/12/16 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
PHP正则表达式之RCEService回溯
2022/04/11 PHP