使用ob系列函数实现PHP网站页面静态化
作者:hebedich 发布时间:2023-11-15 03:26:05
将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
两者在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()。
猜你喜欢
- 本文帮你六步改善SQL Server安全规划全攻略。一、什么是SQL注入式攻击所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的
- 可视性的问题几乎在每次不同产品的用户测试中都会出现:用户总是对页面的某些元素、功能视若无睹,或根本无视。基于此,对这个问题进行了一番小小的研
- 只是做笔记,没什么!! 代码如下:--创建测试表 CREATE TABLE [dbo].[Student]( [ID] [int
- Array()CInt()CStr() Date() DateAdd() Day() FormatCurrency() FormatDate
- staytime.asp<% If Request.QueryString("time")&n
- 在学习与运用ASP中,response对象涉及到的方面也比较多,想全部都掌握也并非一两天的事,我也是最近才发现response对象中居然有这
- 很多时候,希望能够在 HTML 中使用空格排版。但浏览器在解析 HTML 时,会把连续的空格解析成一个,所以我们会使用
- 下面十条内容的标题原本是《10 Lessons for Young Designers》,是John C. Jay给年青设计师们的十条经验教
- 嗯,你可以说我很无聊。最近疯狂加班,今天才得以有时间搞一个CSS的像素图来消遣休息下。先看效果:运行代码框<!DOCTYPE html
- 科学设计你的网站网页:来自 Eye-Tracking研究的23节必修课 ——Christina Laun在网络设计领域关于Eye-
- 很高兴参加了这一期的薯片会,认识了几个朋友~~不料的却是今天我要来总结一下本次薯片会我们总共讨论了三个议题:A、 如何让“用户”更容易识别超
- UNIX时间戳转换为日期用函数FROM_UNIXTIME()select FROM_UNIXTIME(1156219870);日期
- 当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8
- Example.asp<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001&qu
- 介绍据官方所述,mango Cache是对Guava Cache基于go的部分实现,同时mangoCache参考了Caffeine以及go-
- 很多的朋友一而再,再而三的在Server.Mappath上卡壳,cnbruce也是一遍两遍地重复,还是不能全部解决,所以通过下面的举例,希望
- 拼音类文件py_class.php源码如下:<?php class py_class{ function py_class(){
- 1、选取最适用的字段属性MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建
- 最近遇到SQL Server 2005 输入框不能输入中文,在网上查了N久,试验了十几次奏这个法子有用:“把你表中的自动编号列放到最后面”。
- 1、给滚动条换色 好多网站的滚动条不是系统默认的灰色,而是一些红色、蓝色的,请问这是如何做的?答:这个很好实现,插入下面的代码:<&n