谈到PHP静态化,有两种含义。第一:静态化一个PHP页面为HTML,第二:全站静态化
第一:静态化一个PHP页面为HTML
备注:这里不讲模板引擎,只谈纯PHP实现原理
重点:ob系列函数,ob_start().ob_get_conent().ob_end_flush(),ob_clean()
Ob为啥意思即output buffering 输出缓存 . 当我们开启ob_start()的时候,来自PHP程序的非文件头信息均不会发送到浏览器,而是保存在ob里面
模型为这样的:
<?php
ob_start(); $name =’lihao’; ?> <html> <head> </head> <body> Demo : my name is <?=$name?> </body> </html> <?php $cache = ob_get_content(); //为以上任何的输出[此输出含义:包括空格,echo 等,html ] $fp= fopen(‘xxx.html’,’r+’); fwrite($fp,$cache); fclose($fp); unset($cache); ob_end_flush(); ?> |
至此就完成了把一个动态的PHP页面 ,静态为html
何时生成html呢?
- 通过实践间隔[半小时,一小时等] 进行更新
- 通过filemtime(源文件) ,filemtime(目标文件) 等更新时间判断
第二:全站静态化
全站静态化,就说的简单点。实现原理为fopen()函数
实现步骤:
1 .构建全站的URL
如: $url[] = array(
0=>array(
‘php’=>’index.php?jingtaihua=true’,
‘html’=>’index.html’
),
1=>array(
‘php’=>’products.php?jngtaihua=true&id=2&type=catalog’,
‘html’=>’products_2_catalog_.html’
)
);
2.通过静态化变量$_GET[‘jingtaihua’] 来构建页面内部url
如首页:
<html>
<body> <a href=” <?php If($_GET[‘jingtaihua’]){ echo ‘index.html’; }else{ echo ‘index.php’ ; } ?> ’>首页</a> </body> </html> |
- 通过fopen()函数实现静态化
foreach($url as $value){
…..
$fp= fopen(‘url’) ;
……
}
谈到半静态化,则是把php地址写为html地址,通过url重写跳转实现 .