先看一个简单的例子
ob_start()开启ob缓存,然后111放进了ob缓存, 再调用ob_clean()清除缓存,最后输出的结果是222。
原理:页面执行到最后, 会把ob缓存的数据(如果有的话)强制刷新到程序缓存, 然后通过apache对数据封装成http响应包, 返回给浏览器。
注意:header头信息放程序缓存,如果没有ob缓存,则所有数据直接放程序缓存。
更多api参考 : http://php.net/manual/zh/ref.outcontrol.php
}
flush 只是刷新到浏览器缓存, 然后程序结束时再一起输出。
我把浏览器缓存占满就能看到效果.
echo str_repeat(‘ ‘,1024);for($i = 0; $i < 5; $i++){echo $i;sleep(1);flush();
}
ob缓存中能存放哪些数据.
ob_start() 开始到 ob_get_contents()之间返回给浏览器的数据。
实现页面静态化可以使用正则替换, 也可以利用ob实现页面静态化。
<?phpif (file_exists(‘index.html‘) && filemtime(‘index.html‘) + 60 >= time()){echo file_get_contents(‘index.html‘);exit;
}ob_start();?>
//这里写原来的代码
如果内容修改, 我们看不到最新内容, 这是我们可以简单优化, 每过60秒刷新一次。
原文:http://www.cnblogs.com/tanxing/p/6923243.html