先看一个简单的例子

<?php
ob_start();
echo 111;
ob_clean();
echo 222;

ob_start()开启ob缓存,然后111放进了ob缓存, 再调用ob_clean()清除缓存,最后输出的结果是222。

原理:页面执行到最后, 会把ob缓存的数据(如果有的话)强制刷新到程序缓存, 然后通过apache对数据封装成http响应包, 返回给浏览器。

注意:header头信息放程序缓存,如果没有ob缓存,则所有数据直接放程序缓存。

更多api参考 :  http://php.net/manual/zh/ref.outcontrol.php

<?php
for($i = 0; $i < 3; $i++){
echo $i;
sleep(1);
flush();
}

flush 只是刷新到浏览器缓存,  然后程序结束时再一起输出。

我把浏览器缓存占满就能看到效果.

<?php
ob_end_clean(); //php.ini中设置了开启ob缓存, 所以关闭一下.
echo str_repeat(' ',1024);
for($i = 0; $i < 5; $i++){
echo $i;
sleep(1);
flush();
}

ob缓存中能存放哪些数据.

ob_start() 开始到 ob_get_contents()之间返回给浏览器的数据。

实现页面静态化可以使用正则替换, 也可以利用ob实现页面静态化。

<?php
if(file_exists('index.html') && filemtime('index.html') + 60 >= time()){
echo file_get_contents('index.html');
exit;
}
ob_start();
?> //这里写原来的代码 <?php
$html_str = ob_get_contents();
file_put_contents('index.html', $html_str);
?>

如果内容修改, 我们看不到最新内容, 这是我们可以简单优化, 每过60秒刷新一次。

最新文章

  1. UITableView cell复用出错问题 页面滑动卡顿问题 &amp; 各杂七杂八问题
  2. Sublime Text 3 引用插件
  3. poj 3352Road Construction(无向双连通分量的分解)
  4. java基本数据类型及相互间的转换
  5. sql server存儲過程語法
  6. js中的String数据类型
  7. POJ 3352 无向图边双连通分量,缩点,无重边
  8. js中年份、月份下拉框
  9. struts2一个和多个文件上传及下载
  10. LeetCode算法题-Sum of Square Numbers(Java实现)
  11. JSTL配置文件下载地址
  12. Hibernate基本映射类型
  13. Ubuntu 安装显卡驱动
  14. js 三目运算
  15. ios开发之--WKWebView的使用
  16. 洛谷P1592 互质
  17. w3cschool菜鸟教程离线版chm手册正式发布
  18. web应用程序安全攻防---sql注入和xss跨站脚本攻击
  19. ROS naviagtion analysis: costmap_2d--StaticLayer
  20. Android 画个电池出来(Paint和canvas)

热门文章

  1. ColKang v1.0
  2. Mysql修改表结构详解
  3. 【转】TCP那些事(上,下)
  4. 搭建selenium + Python环境的总结:
  5. 何时使用img标签,何时使用background-image背景图像
  6. Android----- 改变图标原有颜色 和 搜索框
  7. Java中子类对象赋值给父类变量
  8. torch7框架 深度学习(1)
  9. IPv6 地址分类
  10. IOS-Storyboard全解析-第二部分