PHP静态化的好处就不多说了,一句话概括就是“让页面打开速度飞起来”。PHP静态化有纯静态和伪静态,伪静态其实严格来说并不是真正的“静态”,它只是伪装了自己,让它看起来像静态,它的实现是利用apache或者nginx服务器对url的重写,url看起来和静态的url看起来一样美观,但实际上它还是php。伪静态这里就不多介绍了。下面一张图先让你从宏观了解一下PHP静态化。
纯静态
开始之前,我们先了解一下PHP的ob函数。ob_start();//开启缓冲区
ob_get_contents();//获取缓冲区内容
ob_clean(); //清除缓冲区内容
可以看到ob函数是关于缓冲区的,那么缓冲区是什么呢?缓存区也就是buffer,其实我们在执行PHP的时候,PHP会把相关的输出内容都先放到缓冲区,等到PHP函数完全执行结束,才会把缓存区内容输出到浏览器,也就是我们看到的内容。
下面我们先通过一段简单的代码了解一下这个缓冲区<?php
$name = 'K先生';
echo $name;
ob_clean();
echo ob_get_contents();
上面代码执行之后,你会发现什么输出都没有,那是因为ob_clean()函数将缓存区内容都清除了,尽管echo输出在ob_clean()之前。
那么你现在把ob_clean()注释掉再试试,是不是能够正常输出了,并且输出了两个“K先生”,那是因为ob_get_contents()函数的存在哦。
最后需要注意的是,一般PHP默认是开启buffer缓存的,但为了确保万无一失,最好加上ob_start()先开启缓冲区。
一个小实例带你体验PHP静态化实现的过程
首先我们先来创建一个模板文件moban.php
<?php echo $title; ?>然后接着创建index.php文件<?php
//用于填充模板的$title,$content变量一般可以从数据库中查找
$title = '这是一个标题';
$content = '欢迎你们来到K先生个人博客!';
require 'moban.php'; //把模板文件包含过来
$content = ob_get_contents(); //获取缓冲区内容
ob_clean(); //清除缓冲区,也就是不输出模板内容了
$res = file_put_contents('1.html', $content); //将获取到的缓冲区内容写到一个html文件中
if ($res != 0) {
echo "生成静态文件成功";
} else {
echo "生成静态文件失败,请检查源码";
}
运行index.php,你会发现生成了一个HTML文件(1.html),这就是全静态了。上面的注释应该很详细了,这就不多说了,
如果有问题,欢迎留言。你若问,我必答!