首页 > 代码库 > 利用PHP的ob函数实现生成静态化页面
利用PHP的ob函数实现生成静态化页面
之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的。今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下。
经他讲解后,才知道其实生成静态HTML页面很简单。PHP提供了专门的函数来实现。
以下整理出方法(实现生成html这应该只是其中一种方法):
通过php的ob缓存来实现
提高速度
1,通过php的ob缓存来实现
使用php的ob缓存实现页面静态化
修改php.ini配置文件
output_buffering=Off
1,缓存:smarty缓存, ThinkPHP框架的缓存,PHP的ob缓存
(1)ob---缓存,先将输出的数据呢,缓冲到一块空间
然后显示的时候再显示这块空间的缓存的数据
1,ob_start() 先将输出的数据优先放入到 ob缓存中
2,ob_clean() 清空缓存,但是没有关闭
3,ob_end_clean() 清空缓存,同时也关闭缓存
4,ob_flush() 将ob缓存的数据,输出到程序缓存
5,ob_end_flush() 将ob缓存的数据输出到程序缓存并且关闭ob缓存
(1)程序缓存
就是如果没有开启ob缓存,先将数据缓存到程序中,等echo都完了,再统一的输出
浏览器也有缓存:
浏览器先攒着数据,等达到一定的数量之后(ie 500多MB)的时候才输出
代码如下:
1 <?php 2 header(‘Content-type:text/html; charset=utf-8‘); 3 /** 4 ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里; 5 ob_get_contents():是读出缓冲区里的内容,下面有代码为例; 6 ob_end_clean():这个比较重要,只有使用了这个函数后,缓冲区里的内容才会读取出来 7 8 */ 9 if(file_exists(‘./index.html‘)) //静态index.html文件是否存在10 {11 $time = time(); //文件修改时间和现在时间相差的话,直接导向html文件,否则重新生成htm12 13 if($time-filemtime(‘./index.html‘) < 60)14 {15 header(‘Location:./index.html‘);16 }17 }18 19 //开始处加入ob_start();20 ob_start(); //开启php的ob缓存,这些数据放到ob缓存中,没有开启ob缓存,然后放到程序缓存中21 22 //动态部分内容23 ?>24 <html>25 <head>26 <meta charset="utf-8" />27 <title>Hello</title>28 <style>29 body{ background:black;color:white;font-size:20px;}30 </style>31 </head>32 <body>33 <p align="center">PHP生成HTML文件....</p>34 </body>35 </html>36 <?php37 //在结尾加入ob_end_clean(),并把本页输出到一个变量中38 $htmlStr = ob_get_contents(); //获得缓存中的数据39 ob_end_clean();40 41 //写入文件42 $fp = fopen(‘./index.html‘, ‘w‘);43 fwrite($fp, $htmlStr) or die(‘写文件错误‘);44 45 echo "生成HTML完成!";
利用PHP的ob函数实现生成静态化页面
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。