摘要::
静态化:
静态化是解决减轻网站压力,提高网站访问速度的常用方案.包括:纯静态和伪静态。
纯静态:
将PHP程序生成静态的HTML文件,保存到服务器的磁盘中。
原理:
在用户访问PHP程序时,首先检测静态的HTML文件是否存在,如果存在直接输出静态文件,如果静态文件不存在,查询数据库,生成静态文件,并输出。
优势:
减少PHP程序编译和对数据库的查询。
数据缓冲区:
数据缓冲区是用户前端用来存储、操纵数据的对象。

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 某文件夹.

(对文件夹进行权限修改而不是对某个文件,原因是我们在对当前文件夹进行写入操作)

PHP 静态缓存 OB系列函数相关推荐

  1. PHP中ob系列函数讲解(浏览器缓存技术)

    Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况. 输出控制函数不对使用 header() 或 setcooki ...

  2. php output详解,PHP输出缓冲控制Output Control系列函数详解,output函数详解

    PHP输出缓冲控制Output Control系列函数详解,output函数详解 概述 以前研究过PHP的输入输出缓冲,不过博客搬家以后,原来文章找不到了,今天看到一篇好文,顺便转载过来. 简介 说到 ...

  3. ThinkPHP实现静态缓存和动态缓存

    2019独角兽企业重金招聘Python工程师标准>>> 弄清静态缓存和动态缓存的用途: 静态缓存:生成静态页面--缓存的是整个页面; 动态缓存:仅对数据库中的数据进行了缓存,即&qu ...

  4. php查询socket数据包头,php 查询数组值php中关于socket的系列函数总结

    本文列举了所有关于PHP语言中使用socket相关服务的一些函数.注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释(分号): ...

  5. 字符设备驱动之cdev_init()系列函数

    字符设备驱动之cdev_init()系列函数 1.内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct ...

  6. openssl之EVP系列之12---EVP_Seal系列函数介绍

    openssl之EVP系列之12---EVP_Seal系列函数介绍     ---根据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成     (作者:Dra ...

  7. ecshop源码分析——静态缓存static_c…

    http://guozhiwei.javaeye.com/blog/673291 http://www.phpall.cn static_caches缓存文件 存放在ecshop/temp/stati ...

  8. wordrpress静态缓存插件WP Super Cache 使用教程

    WordPress 静态缓存插件众多,孰优孰劣,这里不予评判,只说一说使用率比较高的静态缓存插件WP Super Cache的基本使用方法. 插件安装 进入WordPress后台 → 插件 → 安装插 ...

  9. dlopen系列函数详解

    Linux提供了一套API来动态装载库.下面列出了这些API: dlopen:该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添 ...

  10. C语言:跨平台环境下使用snprintf,vsnprintf系列函数要注意返回值的问题

    标准C语言函数snprintf,vsnprintf系列函数可以向指定的缓冲区输出格式化打印的字符串. 如果指定的缓存区足够大,那么调用正常,返回值就是写入缓存区的字节长度(不含结尾'\0') 那么缓存 ...

最新文章

  1. 凯文·凯利:未来很美好,今天仍是Day1
  2. python elasticsearch模块_Python 操作 ElasticSearch
  3. How to Visualize Your Recurrent Neural Network with Attention in Keras
  4. Java基础(三十五)Math、Random类和数字格式化(String.format方法)
  5. 《Linux Device Drivers》第十六章 块设备驱动程序——note
  6. POJ 2480 Longge#39;s problem 积性函数
  7. 案例:需求问题的解决方案
  8. ROS:激光雷达+laser_scan_matcher 运行gmapping
  9. 基于Jenkins+Gitlab+Harbor+Rancher架构的CI/CD实现
  10. 2.11 数值分析: 事后误差估计和迭代改善
  11. C盘快满了,处理一下pagefile.sys文件和hiberfil.sys文件
  12. 采用commons-emai发送电子邮件
  13. 计算机网络中atm意思,atm是什么(atm什么意思)
  14. 深度学习中Batch size对训练效果的影响
  15. 记录下SpringBoot父子工程使用jib构建docker镜像的过程(跳过多余模块)
  16. 大数据教程(10.5)运营商流量日志解析增强
  17. linux服务器设置定时任务,Linux服务器定时任务
  18. python 合并表格
  19. Vue实现购物车全选及价格计算
  20. 图片和图片转base64大小的关系

热门文章

  1. 关于西门子plc的CPU
  2. 廖雪峰Python 2.X 教程
  3. JSP javaweb餐厅点餐系统源码(点餐系统)jsp点餐系统网上订餐
  4. svn回退到指定版本
  5. pds如何安装虚拟服务器,PDS工业缝纫机制版软件安装及常见问题解决方法
  6. Linux抓包命令tcpdump
  7. php抽奖实现-概率算法
  8. 数据库知识点总结归纳
  9. html5svg在线编辑器,五款超实用的开源SVG工具
  10. Linux上mysql忘记密码重置密码