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

2015-01-24信息快讯网

php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents() ,今天我们来谈谈使用这些函数来实现php网站页面静态化

将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_SELF,SCRIPT_NAME,REQUEST_URI区别
PHP扩展模块memcached长连接使用方法分析
php使用pdo连接并查询sql数据库的方法
php将access数据库转换到mysql数据库的方法
php启用sphinx全文搜索的实现方法
php中mail函数发送邮件失败的解决方法
php用户注册时常用的检验函数实例总结
PHP获取当前完整URL地址的函数
ThinkPHP中使用ajax接收json数据的方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
非常实用的PHP常用函数汇总
PHP使用glob函数遍历目录或文件夹的方法
jQuery Mobile + PHP实现文件上传
简单谈谈php中ob_flush和flush的区别
php中ob_get_length缓冲与获取缓冲长度实例
php使用glob函数快速查询指定目录文件的方法
PHP解码unicode编码的中文字符代码分享
PHP语法自动检查的Vim插件
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Parse正式发布开源PHP SDK
Php连接及读取和写入mysql数据库的常用代码
php向js函数传参的几种方法
PHP的反射类ReflectionClass、ReflectionMethod使用实例
YII中assets的使用示例
PHP使用Session遇到的一个Permission denied Notice解决办法
php mb_substr()函数截取中文字符串应用示例
PHP中的gzcompress、gzdeflate、gzencode函数详解
VB中的RasEnumConnections函数返回632错误解决方法
php中的curl_multi系列函数使用例子
PHP中使用glob函数实现一句话删除某个目录下的所有文件
ThinkPHP Mobile使用方法简明教程
PHP错误Cannot use object of type stdClass as array in错误的解决办法
PHP中把stdClass Object转array的几个方法
PHP检测移动设备类mobile detection使用实例
©2014-2024 dbsqp.com