关于页面php文件执行阶段
语法分析——》编译——》运行
如何优化页面的响应时间
动态页面静态化
优化数据库
使用负载均衡
使用缓存
页面静态化能够解决的问题 1.减少服务器脚本的计算时间 2.降低服务器的响应时间 但是静态化不适用于内容经常变换的页面。
Buffer认知
Buffer就是一个缓冲区,一个内存地址空间,用于存储数据的区域
输出流程
内存-》php buffer-》tcp-》终端
将Php.ini中 output_buffering = on Php5.3以上默认是开启的。
Ob_get_contents() 获取php缓冲区的文件
如果php.ini缓冲区没有开启,可以再脚本上部添加ob_start();开启
php如何实现页面纯静态化呢?
基本方式
1.File_put_contents()函数
2.使用php内置缓存机制实现页面静态化 – output_buffering
操作缓冲区的函数ob_*
Ob函数
Ob_start 打开输出控制缓冲
Ob_get_contents 返回输出缓冲区内容
Ob_clean 清空(擦掉)缓冲区内容
Ob_get_clean 得到当前缓冲区的内容并删除当前输出缓冲区
这四个是核心参数,静态化的核心思想就是,将保存到缓冲区的内容拿出来,保存在本地文件内。例如:
准备两个文件,一个是模板文件template.php,一个实现静态化的脚本index.php。
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
<title>
<title>这里是一个模板文件 template.php </title>
</title>
</head>
<body>
<ul>
<?php foreach ($arr as $key => $value) { ?>
<li><?php echo $value['title'] ?></li>
<?php } ?>
</ul>
</body>
</html>
下面开始是实现将上面的模板文件静态化的过程。
<?php
//按照常规套路的话,这个数组应该是从数据库中拿到的,这里为了简便就直接准备一个二位数组
$arr = array(
0=>array('title'=>'这里是第一个标题'),
1=>array('title'=>'这里是第二个标题'),
2=>array('title'=>'这里是第三个标题')
);
//缓冲区必须要在输出之前开启
ob_start();
//把模板文件引入
include_once('./template.php');
//从缓冲区拿到文件,写到本地保存起来
if(file_put_contents('./text.txt', ob_get_clean())){
echo 'success';
}else{
echo 'error';
}
?>
页面静态化的原理就是这样了。