PHP 静态缓存 OB系列函数

摘要:: 静态缓存,一般指web类应用中,将图片、js、css、视频、html等静态文件/资源通过磁盘/内存等缓存方式,提高资源响应方式,减少服务器压力/资源开销的一门缓存技术

OB系列函数::

  • ob_start()函数:打开输出缓冲区
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

  • Flush():刷新缓冲区的内容,输出
说明:这个函数经常使用,效率很高。
  • ob_flush冲刷出(送出)输出缓冲区中的内容
 
 
 
 
 
 
说明:这个函数将送出缓冲区的内容(如果里边有内容的话)。如果想进一步处理缓冲区中的内容,必须在ob_flush()之前调用ob_get_contents() ,因为在调用ob_flush()之后缓冲区内容将被丢弃。 

此函数不会销毁输出缓冲区,而像ob_end_flush() 函数会销毁缓冲区。
  • ob_get_contents :返回内部缓冲区的内容
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE.
  • ob_end_flush: 发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区
说明:这个函数发送输出缓冲区的内容(如果有的话)
  • ob_implicit_flush:打开或关闭绝对刷新
说明:默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
  • ob_clean:清空(擦掉)输出缓冲区
    说明:此函数用来丢弃输出缓冲区中的内容。  此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲区。 
  • ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
说明:这个函数不会输出内部缓冲区的内容而是把它删除
  • ob_get_length:返回内部缓冲区的长度
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活,则返回 FALSE.

静态缓存简单应用::
//在要做静态缓存的页面,我们定义一个变量来存放一个缓存文件的路径(相对于当前页面的路径)
$filename="scoreSearch.html";
//定义一个变量来存储缓存过期时间
$endTime = 10;
//判断一下,缓存文件是否存在或者是否过期,如果缓存文件不存在就执行源代码生成缓存,或者时间过期了也应该重新缓存一下,如果上述条件不满足则调用缓存页面显示
if(!file_exists($filename) || filemtime($filename)+$cachetime<time())
{
    //缓存页面代码
}
else
{
    include($filename);//如果存在,调用缓存文件

    或者

    echo file_get_contents($filename);//取出文件内容并输出
}
 
  
//生成缓存,在页面输出内容之前,我们调用ob_start()方法打开内存缓冲区,将要输出的内容放到内存里面
ob_start();

//输出将要缓存的内容
echo "######################################"; 

//在页面输出完之后,将内存中获取到的内容保存下来,存为一个静态页面
//从内存缓存中获取页面代码
$content = ob_get_contents();

//将获取到的内容存放到缓存文件
file_put_contents($filename,$content);

//清掉内存缓存
ob_flush();

//最后我们加上一段输出,来测试是否重新缓存了,如果页面有输出该内容代表重新生成了缓存文件,如果没有,说明是直接读的缓存文件
echo 123; //测试是否调用了缓存文件,缓存文件不输出这句话


这样我们就简单做了一个静态缓存,完整代码如下::
<?php
//查询是否有缓存文件
$filename="scoreSearch.html";
$endTime = 10;
if(!file_exists($filename) || time()-filemtime($filename) > $endTime){
    ob_start(); //启动ob缓存
    echo "<html><a href='#'>aa</a></html>";
    $ob_str = ob_get_contents();  //返回输出缓冲区的内容
    $file = fopen($filename,'w') or die("Unable to open file!");  //打开文件或者 URL('w'参数:如果文件不存在则尝试创建之)
    fwrite($file,$ob_str);  //写入文件
    fclose($file);  //关闭一个已打开的文件指针
    ob_flush();
}else {
    echo file_get_contents($filename);
}
?>



把代码运行到linux 中的静态缓存   注意:::
    

linux 中   需要  开启   权限   \html   

    在Linux中,权限的所有者分为用户权限,组权限和其他权限

     权限分为:读 r , 写 w , 执行 x.

    权限都可以用数字来表示:r 4, w 2 , x 1, 

    代码如下:

            chmod -R 777 某文件夹/文件.








猜你喜欢

转载自blog.csdn.net/DuTianTian_csdn/article/details/80345042