1.buffer
buffer 其实就是缓冲区,一个内存地址空间,主要用于存储数据。他是内存中的一个区域
文件内容的保存过程:
先把内容写到操作系统的buffer,但buffer写满了后就写入到磁盘中保存
php的输出内容的过程,phpbuffer可以开启和关闭
echo 1
输出流程:内容-phpbuffer-tcp-终端
所以phpbuffer是很重要的
2.phpbuffer的支持
2.1 打开缓冲区
- php.ini 5.4 默认开启
- 如果没有开始也可以是是用ob_start()手动开启缓冲区
2.2获取缓冲区的内容
echo ob_get_contents();
获取内容一定要在 输出之后获取,不可以在输出之前获取
// ob_start();
echo $str="1234566"; //如果没有输出,ob_get_contents();获取不掉值
echo "<br/>";
echo ob_get_contents();
// echo $str;
3. php 实现静态化原理
获取缓冲区的内容,写入文件
3.1实现的基本方式
- file_put_contents()函数
- 使用php内置的缓存机制实现页面的静态化 -output_buffering
3.2 ob函数
- ob_start 打开输出控制缓冲
- ob_get_contents 返回输出缓冲区内容
- ob_clean 清空(擦掉)输出缓冲区
- ob_get_clean 得到当前缓冲区的内容并删除当前输出缓冲区
dmeo
file_get_contents(\'index.html\',ob_get_clean())
获取缓冲的内容,写入文件
4.php纯静态页面生成的实现
生成页面文件保存到磁盘上
缓冲区前面必须有输出语句
- 查询数据库
- 组装动态文件
- 将动态文件生成静态文件(获取缓冲区内容,写入文件)
5. 触发系统生成静态文件的方式
- 页面加缓存时间
- 手动触发
- 使用linux的定时任务crontab
5.1使用缓存时间
file_get_contents(\'index.html\',ob_get_clean())
if(is_file(\'index.html\')&&(time()-filemtime(\'index.html\')<300)){
require_once(\'index.html\')
}else{
}
请发表评论