PHP程序 有三个缓存区: ob缓存 、程序缓存、浏览器缓存
ob = output buffer 输出缓冲
缓存区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
ob缓存技术是减轻服务器压力的一种,这些函数是为了在编程中字符串输出到客户端上去能够延长时间而用到,延迟输出(字符串先发送到缓冲区,需要时再输出到浏览器),是一种输出技巧。最常见的应用是静态化技术(可实现静态缓存)
<?php
//ob_start就是启用ob缓存
ob_start();
header("content-type:text/html;charset=utf-8");
//在程序中,我启用ob缓存
echo "hello1, world";
//清空ob缓存,但是不关闭ob缓存
//ob_clean();
//清空ob缓存,并关闭ob缓存
//ob_end_clean();
//把ob缓存的内容,刷新到程序缓存,并关闭ob
//ob_end_flush();
//把ob缓存的内容,刷新到程序缓存,不关闭ob
ob_flush();
echo "beijing";
echo ob_get_contents();
//ob_get_contents()可以获取ob缓存的内容
$str=ob_get_contents();
//把$str放入到一个文件
file_put_contents("d://my.log",$str);
?>
关于浏览器缓存:
<?php
echo str_repeat(‘ ‘,1024);
for($i=0;$i<5;$i++){
echo $i;
sleep(1);//休眠1秒,这里说明一下在休眠期 浏览器和 apahce服务器的连接不会断
flush();//把程序缓存刷到浏览器缓存
}
实例代码:
<?php ob_start(); //打开输出缓冲区 $cacheTime = 864000; //设置缓存页面过期时间 $cacheDir = ‘cacheDir‘; //设置缓存页面文件目录 if (!is_dir($cacheDir)) mkdir($cacheDir); //判断目录是否存在,否则创建目录 $cacheFile = $cacheDir.‘/‘.(int)date("Ymd").‘.html‘; //缓存文件路径,文件以日期命名 if (!is_file($cacheFile) || time() - filemtime($cacheFile) > $cacheTime) { <!--页面输出部分内容。也是ob_get_contents()函数取得的全部内容--> $content = ob_get_contents(); //取得php页面输出的全部内容 $fp = fopen($cacheFile, "w"); //输出内容写入文件 fwrite($fp, $content); fclose($fp); } else { echo $content = file_get_contents($cacheFile); //如果缓存文件已经存在,且未过期则读取 } ?>