为什么要静态化页面?
当面对大流量或者页面执行业务比较多的是时候,可以从动态查询数据库到直接不用查数据,直接访问静态页面,可以数据库和服务器的压力。让用户访问速度更快。
一般生成静态化页面两种方式:1.主动(服务器主动生成)。2.被动(客户端访问生成)。
说到页面静态化,不得不先了解一个东西,叫buffer,那么buffer是啥?英文译过来的意思是缓冲。
buffer其实就是缓冲区,一个内存地址,主要用于储存数据区域
打比方说,我打开个编辑器或者PS也行,让我们运行软件工作的时候,数据没有保存的时候,我们的正在操作的代码和数据在哪里,其实就在buffer里,当我们把buffer空间写满了,或者保存的时候,就会把数据写入磁盘中,当然PHP的这个buffer和这个不完全一样。
先说一下PHP脚本输出流程 echo/print -(数据) -> php buffer -> tcp buffer -> 客户端浏览器
为什么这么说下面看一下示例:
先介绍个函数叫 ob_get_contents() 说明 返回输出缓冲区的内容
<?php
$a= "这是第一次!<br/>";
echo $a;
echo ob_get_contents() ; //获取当前缓冲区内容
//页面结果
这是第一次!
这是第一次!
这说明$a经过了缓冲区。打开php.ini查找output_buffering,有的是on有的是4096(缓冲区的大小)等于4k,我的是php7.0.9是4096,5.3版本的是on。我在关掉缓冲区做个示例(如果是低版本的php可以直接把output_buffering = on注释掉)
函数介绍 ob_end_clean() 说明 清空(擦除)缓冲区并关闭输出缓冲
<?php
ob_end_clean();//关闭缓冲区
$a= "这是第一次!<br/>";
echo $a;
echo ob_get_contents() ; //获取当前缓冲区内容
//页面结果
这是第一次!
再次证明了数据的输出顺序
为什么说写满buffer才输出呢在看一个例子
<?php
for ($i = 0; $i < 10; $i++) {
echo $i ."-->".date('H:i:s')."<br/>";
sleep(1); //
}
//网页输出结果是等待网页响应了10秒输出的
0-->13:54:26
1-->13:54:27
2-->13:54:28
3-->13:54:29
4-->13:54:30
5-->13:54:31
6-->13:54:32
7-->13:54:33
8-->13:54:34
9-->13:54:35
下面是写满了一个buffer就是4K输出的
<?php
for ($i = 0; $i < 10; $i++) {
//随便创建一个文本里面写一下字符串使内容超过4KB
echo file_get_contents('./1.txt') . $i . '<br/>';
sleep($i +1);
}
//页面输出结果
断断续续可以看到间断性输出,浏览器界面不会一直保持空白。
证明每写满一个php buffering,数据就会发送到客户端浏览器。
?>
下面在介绍个函数ob_start()
说明 打开输出控制缓冲 (当然还有一个功能官方手册上没有说,我在实际应用中在output_buffering默认开启的情况下使用ob_start()能把缓冲区扩展到无限大)。
同样刚才的示例
<?php
ob_start();
for ($i = 0; $i < 10; $i++) {
//随便创建一个文本里面写一下字符串使内容超过4KB
echo file_get_contents('./1.txt') . $i . '<br/>';
sleep($i +1);
}
//页面输出结果
是等待页面时间,执行页面结束后,一次性显示出全部结果
?>
下面看一下thinkphp5框架中的fetch()
方法
public function fetch($template = '', $vars = [], $replace = [], $config = [], $renderContent = false)
{
// 模板变量
$vars = array_merge(self::$var, $this->data, $vars);
// 页面缓存
ob_start();
ob_implicit_flush(0);
// 渲染输出
$method = $renderContent ? 'display' : 'fetch';
$this->engine->$method($template, $vars, $config);
// 获取并清空缓存
$content = ob_get_clean();
// 内容过滤标签
Hook::listen('view_filter', $content);
// 允许用户自定义模板的字符串替换
$replace = array_merge($this->replace, $replace);
if (!empty($replace)) {
$content = strtr($content, $replace);
}
return $content;
}
输出模板的方法也用到了ob也就是说,框架中的缓存页面也靠着个东西。当然了页面静态化并非这一种方法(常用的是模板技术,和output_buffering)。
是模板技术,(模板引擎smarty)。
以下观点来自于我本人。
模板技术来源于MVC设计模式的产物,最早的开发模式是html和PHP混编,这样不美观、也不好维护、不利于分工合作。其他的先不提,就是百度百科中smarty中的一点,来源于优点3 .缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
先写一个静态化的页面的小例子,当然模板技术比这个复杂
<?php
$link=mysqli_connect("127.0.0.1","root","123456");
mysqli_select_db($link,'dongli');
$sql="select * from k_article limit 0,10";
$resouce=mysqli_query($link,$sql);
$news=[];
while ($res=mysqli_fetch_assoc($resouce)){
$news[]=$res;
}
ob_start();
require_once("default.html");
$b=file_put_contents("index.html",ob_get_clean());
if($b){
echo "成功";
}else{
echo "失败";
} //以上在补充个文件修改时间就可以了
如果拿nginx做实验(nginx属于tcp端)关闭两个选项
gzip off;
proxy_buffering off;
fastcgi_keep_conn on;
php配置文件则需要关闭buffering
output_buffering=off;
注意一般先是:ob_flush();然后是flush();
案例页面:
<?php
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>页面</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/static/css/reset.css">
<link rel="stylesheet" type="text/css" href="/static/css/common.css">
<link rel="stylesheet" type="text/css" href="/static/css/main.css">
<link rel="icon" href="/static/img/icon.ico">
<script type="text/javascript" src="/static/js/jquery.js"></script>
<script type="text/javascript" src="/static/js/jquery.slideshow.js"></script>
<script type="text/javascript" src="/static/js/jquery.smimgslide.js"></script>
<script type="text/javascript" src="/static/js/jquery.countdown.js"></script>
<script type="text/javascript" src="/static/js/main.js"></script>
</head>
<body>
<div class="header">
<div class="header-nav common-container">
<ul class="header-nav-list">
<li><h3><a href="#">秒杀</a></h3></li>
<li><h3><a href="#">优惠券</a></h3></li>
<li><h3><a href="#">闪购</a></h3></li>
<li><h3><a href="#">拍卖</a></h3></li>
<li><h3><a href="#">服装城</a></h3></li>
<li><h3><a href="#">京西超市</a></h3></li>
<li><h3><a href="#">生鲜</a></h3></li>
<li><h3><a href="#">全球购</a></h3></li>
<li><h3><a href="#">京西金融</a></h3></li>
</ul>
</div>
</div>
<div class="lovelife">
<div class="common-container clearfloat lovelife-box">
<div class="common-title">
<i></i>
<h2>爱生活</h2>
<i></i>
</div>
<ul class="lovelife-list clearfloat">
<?php
sleep(1);
ob_flush();
flush();
echo <<<EOF
<li class="lovelife-list-item1 lovelife-list-col2 sidebarpointer" >
<div class="lovelife-list-title">
<h3>爱逛 </h3>
<ul>
<li><a href="#aiguang">奢侈品</a></li><li><a href="#aiguang">保暖羽绒服</a></li><li><a href="#aiguang">功能箱包</a></li><li><a href="#aiguang">时尚手表</a></li><li><a href="#aiguang">珠宝首饰</a></li>
</ul>
</div>
<div class="lovelife-list-content">
<div class="lovelife-list-content-box">
<div class="lovelife-list-content-leimg">
<a href="#"><img src="/static/img/lovelife/lovelife-list-content-leimg-img1.jpg"></a>
</div>
<ul class="lovelife-list-content-riimg">
<li><a href="#"><p>型男衣橱</p><p>抢大额神券</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img1.jpg"></a></li><li><a href="#"><p>摩登女装</p><p>满299减100券</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img2.jpg"></a></li><li><a href="#"><p>内衣精选</p><p>每满50减12</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img3.jpg"></a></li><li><a href="#"><p>时尚女鞋</p><p>跨店199减100</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img4.jpg"></a></li>
</ul>
<ul class="lovelife-list-content-mdimg">
<li><a href="#"><p>珠宝大卖场</p><p>单品低至99元</p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img1.jpg"></a></li><li><a href="#"><p>设计师推荐</p><p>给你喜欢的</p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img2.jpg"></a></li><li><a href="#"><p>打牌好货</p><p>限时特惠</p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img3.jpg"></a></li>
</ul>
</div>
</div>
<div class="lovelife-list-smimg">
<span class="lovelife-list-smimg-leftarrow"><</span>
<span class="lovelife-list-smimg-rightarrow">></span>
<div class="lovelife-list-smimg-box">
<ul>
<li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img1.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img2.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img3.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img4.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img5.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/loveshopping/img6.jpg"></a></li>
</ul>
</div>
</div>
</li>
EOF;
sleep(2);
ob_flush();
flush();
?>
<?php
echo <<<EOF
<li class="lovelife-list-item2 lovelife-list-col2 sidebarpointer" >
<div class="lovelife-list-title">
<h3>爱美丽 </h3>
<ul>
<li><a href="#aimeili">套装</a></li><li><a href="#aimeili">乳液面霜</a></li><li><a href="#aimeili">面膜</a></li><li><a href="#aimeili">洁面</a></li><li><a href="#aimeili">宝洁洗护</a></li><li><a href="#aimeili">身体护理</a></li>
</ul>
</div>
<div class="lovelife-list-content">
<div class="lovelife-list-content-box">
<div class="lovelife-list-content-leimg">
<a href="#"><img src="/static/img/lovelife/lovelife-list-content-leimg-img2.jpg"></a>
</div>
<ul class="lovelife-list-content-riimg">
<li><a href="#"><p>美妆馆</p><p>满199-100</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img5.jpg"></a></li><li><a href="#"><p>面部护肤</p><p>低至199-100</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img6.jpg"></a></li><li><a href="#"><p>香水彩妆</p><p>满199-100</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img7.jpg"></a></li><li><a href="#"><p>洗发护发</p><p>满199-100</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img8.jpg"></a></li>
</ul>
<ul class="lovelife-list-content-mdimg">
<li><a href="#"><p>个护大牌</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img4.jpg"></a></li><li><a href="#"><p>纸品清洁</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img5.jpg"></a></li><li><a href="#"><p>丝倍绮</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img6.jpg"></a></li>
</ul>
</div>
</div>
<div class="lovelife-list-smimg">
<span class="lovelife-list-smimg-leftarrow"><</span>
<span class="lovelife-list-smimg-rightarrow">></span>
<div class="lovelife-list-smimg-box">
<ul>
<li><a href="#"><img src="/static/img/lovelife/smimg/lovebeauty/img1.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/lovebeauty/img2.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/lovebeauty/img3.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/lovebeauty/img3.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/lovebeauty/img4.jpg"></a></li><li><a href="##"><img src="/static/img/lovelife/smimg/lovebeauty/img5.jpg"></a></li>
</ul>
</div>
</div>
</li>
EOF;
sleep(2);
ob_flush();
flush();
?>
<?php
echo <<<EOF
<li class="lovelife-list-item3 lovelife-list-col2 sidebarpointer" >
<div class="lovelife-list-title">
<h3>家电馆 </h3>
<ul>
<li><a href="#jiadian">电视家影</a></li><li><a href="#jiadian">美容器</a></li><li><a href="#jiadian">送电视挂架</a></li><li><a href="#jiadian">洗衣机</a></li><li><a href="#jiadian">满600减100</a></li>
</ul>
</div>
<div class="lovelife-list-content">
<div class="lovelife-list-content-box">
<div class="lovelife-list-content-leimg">
<a href="#"><img src="/static/img/lovelife/lovelife-list-content-leimg-img3.jpg"></a>
</div>
<ul class="lovelife-list-content-riimg">
<li><a href="#"><p>大家电馆</p><p>白条12期免息购</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img9.jpg"></a></li><li><a href="#"><p>厨卫家装馆</p><p>爆款好货低至79元</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img10.jpg"></a></li><li><a href="#"><p>电视家影</p><p>满5000减300</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img11.jpg"></a></li><li><a href="#"><p>冰洗品牌日</p><p>热销爆款提前抢</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img12.jpg"></a></li>
</ul>
<ul class="lovelife-list-content-mdimg">
<li><a href="#"><p>小家电</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img7.jpg"></a></li><li><a href="#"><p>健康电器</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img8.jpg"></a></li><li><a href="#"><p>健康好水</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img9.jpg"></a></li>
</ul>
</div>
</div>
<div class="lovelife-list-smimg">
<span class="lovelife-list-smimg-leftarrow"><</span>
<span class="lovelife-list-smimg-rightarrow">></span>
<div class="lovelife-list-smimg-box">
<ul>
<li><a href="#"><img src="/static/img/lovelife/smimg/homeapp/img1.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/homeapp/img2.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/homeapp/img3.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/homeapp/img4.jpg"></a></li><li><a href="##"><img src="/static/img/lovelife/smimg/homeapp/img5.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/homeapp/img6.jpg"></a></li>
</ul>
</div>
</div>
</li>
EOF;
sleep(2);
ob_flush();
flush();
?>
<?php
echo <<<EOF
<li class="lovelife-list-item4 lovelife-list-col2 sidebarpointer" >
<div class="lovelife-list-title">
<h3>手机派 </h3>
<ul>
<li><a href="#shouji">金属机身</a></li><li><a href="#shouji">快速充电</a></li><li><a href="#shouji">拍照神器</a></li><li><a href="#shouji">后置双摄像</a></li><li><a href="#shouji">双卡双待</a></li>
</ul>
</div>
<div class="lovelife-list-content">
<div class="lovelife-list-content-box">
<div class="lovelife-list-content-leimg">
<a href="#"><img src="/static/img/lovelife/lovelife-list-content-leimg-img4.jpg"></a>
</div>
<ul class="lovelife-list-content-riimg">
<li><a href="#"><p>新Phone尚</p><p>潮流新品抢先体验</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img13.jpg"></a></li><li><a href="#"><p>促销汇</p><p>iPhone5s低至1899</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img14.jpg"></a></li><li><a href="#"><p>手机通讯</p><p>Cool 1C火爆发售</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img15.jpg"></a></li><li><a href="#"><p>怎么挑手机</p><p>潮机评测</p><img src="/static/img/lovelife/lovelife-list-content-riimg-img16.jpg"></a></li>
</ul>
<ul class="lovelife-list-content-mdimg">
<li><a href="#"><p>荣耀爆款</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img10.jpg"></a></li><li><a href="#"><p>魅蓝</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img11.jpg"></a></li><li><a href="#"><p>中心新品</p><p></p><img src="/static/img/lovelife/lovelife-list-content-mdimg-img12.jpg"></a></li>
</ul>
</div>
</div>
<div class="lovelife-list-smimg">
<span class="lovelife-list-smimg-leftarrow"><</span>
<span class="lovelife-list-smimg-rightarrow">></span>
<div class="lovelife-list-smimg-box">
<ul>
<li><a href="#"><img src="/static/img/lovelife/smimg/phone/img1.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/phone/img2.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/phone/img3.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/phone/img4.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/phone/img5.jpg"></a></li><li><a href="#"><img src="/static/img/lovelife/smimg/phone/img6.jpg"></a></li>
</ul>
</div>
</div>
</li>
EOF;
sleep(2);
ob_flush();
flush();
?>
</ul>
</div>
</div>
<!-- footer start -->
<div class="footer">
<div class="footer-slogans">
<ul>
<li class="footer-slogans-item1"><i></i>
<h3>品类齐全,轻松购物</h3></li>
<li class="footer-slogans-item2"><i></i>
<h3>多仓直发,极速配送</h3></li>
<li class="footer-slogans-item3"><i></i>
<h3>正品行货,精致服务</h3></li>
<li class="footer-slogans-item4"><i></i>
<h3>天天低价,畅选无忧</h3></li>
</ul>
</div>
<div class="common-container clearfloat">
<div class="footer-sevice clearfloat">
<table class="footer-sevice-table">
<thead>
<tr>
<th>购物指南</th>
<th>配送方式</th>
<th>支付方式</th>
<th>售后服务</th>
<th>特色服务</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#">购物流程</a></td>
<td><a href="#">上门自提</a></td>
<td><a href="#">货到付款</a></td>
<td><a href="#">售后政策</a></td>
<td><a href="#">夺宝岛</a></td>
</tr>
<tr>
<td><a href="#">会员介绍</a></td>
<td><a href="#">211限时达</a></td>
<td><a href="#">在线支付</a></td>
<td><a href="#">价格保护</a></td>
<td><a href="#">DIY装机</a></td>
</tr>
<tr>
<td><a href="#">生活旅行</a></td>
<td><a href="#">配送服务查询</a></td>
<td><a href="#">分期付款</a></td>
<td><a href="#">退款说明</a></td>
<td><a href="#">延保服务</a></td>
</tr>
<tr>
<td><a href="#">常见问题</a></td>
<td><a href="#">配送费收取标准</a></td>
<td><a href="#">邮局汇款</a></td>
<td><a href="#">返修/退换货</a></td>
<td><a href="#">京西E卡</a></td>
</tr>
<tr>
<td><a href="#">大家电</a></td>
<td><a href="#">海外配送</a></td>
<td><a href="#">公司转账</a></td>
<td><a href="#">取消订单</a></td>
<td><a href="#">京西通信</a></td>
</tr>
<tr>
<td><a href="#">联系客服</a></td>
<td></td>
<td></td>
<td></td>
<td><a href="#">京西JD+</a></td>
</tr>
</tbody>
</table>
<div class="footer-sevice-info">
<h5>京西自营覆盖区县</h5>
<p>京西已向全国2654个区县提供自营配送服务,支持货到付款、POS机刷卡和售后上门服务。</p>
<p><a href="#">查看详情 ></a></p>
</div>
</div>
<div class="footer-lists">
<ul class="footer-lists-links">
<li><a href="#">关于我们</a></li>
<li>|</li>
<li><a href="#">联系我们</a></li>
<li>|</li>
<li><a href="#">商家入驻</a></li>
<li>|</li>
<li><a href="#">营销中心</a></li>
<li>|</li>
<li><a href="#">手机京西</a></li>
<li>|</li>
<li><a href="#">友情链接</a></li>
<li>|</li>
<li><a href="#">销售联盟</a></li>
<li>|</li>
<li><a href="#">京西社区</a></li>
<li>|</li>
<li><a href="#">风险监测</a></li>
<li>|</li>
<li><a href="#">京西公益</a></li>
<li>|</li>
<li><a href="#">English Site</a></li>
<li>|</li>
<li><a href="#">Contact Us</a></li>
</ul>
<br>
<ul class="footer-lists-line1">
<li><a href="#">京公网安备 11000002000088号</a></li>
<li>|</li>
<li>京ICP证070359号</li>
<li>|</li>
<li><a href="#">互联网药品信息服务资格证编号(京)-经营性-2014-0008</a></li>
<li>|</li>
<li>新出发京零 字第大120007号</li>
</ul>
<br>
<ul class="footer-lists-line2">
<li>互联网出版许可证编号新出网证(京)字150号</li>
<li>|</li>
<li><a href="#">出版物经营许可证</a></li>
<li>|</li>
<li><a href="#">网络文化经营许可证京网文[2014]2148-348号</a></li>
<li>|</li>
<li>违法和不良信息举报电话:4006561155</li>
</ul>
<br>
<ul class="footer-lists-line3">
<li>Copyright © 2004 - 2016 京西JD.com 版权所有</li>
<li>|</li>
<li>消费者维权热线:4006067733 <a href="#">经营执照</a></li>
</ul>
<br>
<ul class="footer-lists-line4">
<li>京西旗下网站:<a href="#">京西钱包</a></li>
<li>|</li>
<li><a href="#">京西云</a></li>
</ul>
<br>
<ul class="footer-lists-icons">
<li class="footer-lists-icons-item1"><a href="#"></a></li>
<li class="footer-lists-icons-item2"><a href="#"></a></li>
<li class="footer-lists-icons-item3"><a href="#"></a></li>
<li class="footer-lists-icons-item4"><a href="#"></a></li>
<li class="footer-lists-icons-item5"><a href="#"></a></li>
<li class="footer-lists-icons-item6"><a href="#"></a></li>
</ul>
</div>
</div>
</div>
<!-- footer end -->
</body>
</html>
<?php
ob_flush();
flush();
ob_end_clean();
?>
ob函数介绍
ob_start
–打开输出缓冲区flush
— 刷新输出缓冲
将当前为止tcp buffer中的内容发送到用户的浏览器。flush()
函数不会对服务器或客户端浏览器的缓存模式产生影响。因
次,必须同时使用ob_flush()
,和flush()
函数来刷新输出缓冲。ob_flush
— 将PHP buffer中的内容,送出到Tcp buffer中,
调用ob_flush()
之后缓冲区内容将被丢弃。ob_clean
— 清空(擦掉)输出缓冲区ob_end_clean
— 清空(擦除)缓冲区并关闭输出缓冲ob_end_flush
— 冲刷出(送出)输出缓冲区内容并关闭缓冲ob_get_clean
— 得到当前缓冲区的内容并删除当前输出缓。ob_get_contents
— 返回输出缓冲区的内容。
只是得到输出缓冲区的内容,但不清楚它。没有激活,则返回false;ob_get_flush
— 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。ob_get_length
— 返回输出缓冲区内容的长度ob_get_level
— 返回输出缓冲机制的嵌套级别ob_get_status
— 得到所有输出缓冲区的状态ob_gzhandler
— 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output bufferob_implicit_flush
— 打开/关闭绝对刷送ob_list_handlers
— 列出所有使用中的输出处理程序。output_add_rewrite_var
— 添加URL重写器的值(Add URL rewriter values)output_reset_rewrite_vars
— 重设URL重写器的值(Reset URL rewriter values)
为什要有缓冲区?
如果没有输出缓冲,PHP会在数据准备好后立即将其发送到web服务器—这可能是逐行或逐代码块的。这不仅是因为需要发送大量的小数据位,而且还意味着你在发送数据的顺序上受到限制。输出缓冲通过使您能够存储输出并在准备好时发送它(或者根本不发送它,如果您决定这样做的话)来解决这些问题