PHP 动态页面静态化,半静态化,php静态
我们一般的文件分为动态文件和静态文件:
1.动态文件:一般以.php为后缀的文件,PHP的执行流程:语法分析-->编译-->加载;
2.静态页面:一般指的是纯html文件,直接加载就可以了。
3.动态页面静态化的实质:就是通过php内置函数去将动态页面转换成静态页面,和我们的伪静态是有根本上的不同的,
伪静态这个内容今天就不提了
我后面会单独出章节来讲伪静态的内容。
什么是buffer:
1.buffer是什么:buffer是php文件编译的一个预处理的地方,实质就是一个内存地址,主要用于缓存数据,
实际:PHP文件------->buffer(编译)---->tcp----->返回数据到客户端
2.获取缓冲区的数据:ob_get_content(),开启缓冲区:ob_start()[注意,缓冲区默认在apach下面是开启的]。
3.所用到的函数:
写入函数:fwrite(可以用,但是不推荐)
file_put_contents()推荐此方法
buffer缓冲区操作函数:ob_start();
ob_get_clean()此方法作用是获取缓冲区的数据,然后将数据删除,就没有数据返回到客户端,直接生成静态文件
4.大致流程如下
<?php //判断是 if(!is_file("txt.shtml")){ ob_start(); echo"this is person page"; /* * 这里如果说想查询数据库的数据填充到页面 */ $select_sql="select title from newstable"; $result_set=$db->query($select_sql); file_put_contents("txt.shtml",ob_get_clean()); ?> </<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> {foreach $result-set $v} <title>{$v[title]}</title> {foreach} </head> <body> </body> </html> <?php } else{ require_once "txt.shtml"; } ?>
我总结了一下所谓页面静态化流程:1.判断静态文件index.shtml是否存在,是就直接访问静态文件2.第一次访问index.php时将数据在缓冲区写成静态文件,并引入静态文件3.设置定时器删除静态文件。
注意:我讲的是静态化的原理,但是不同的框架都有相应的方法,可以查看相关文档。
PHP之友评论