PHP静态化有利也有弊端、当然优点肯定是大于弊端、不然也不会有那么多人去研究静态化了。
首先说下静态化的优点:
PHP静态化,能够提高和搜索引擎的友好度,有利于seo优化,相比一大串的url参数来说、搜索引擎更喜欢j静态的html些.
能够提高网站的访问效率、如果你一个页面有超过10个sql语句的话、建议静态化、不仅减轻了数据库的压力。也提高了网站的访问速度、何乐而不为呢、
弊端.
由于是写死的静态html标签、而我们是需要他是能够从数据库中取得最新的数据,在显示给用户、所以这就需要我们去不断手动生成静态页面,吧之前的静态页覆盖。
下面在来讨论下实现静态化的几种方式、
这里说明下。我们不讨论rewrite 伪静态、伪静态虽然有利于seo优化、但还是访问数据库了。当然。使用memcache 等等一些缓存系统、也可以吧数据存在内存中。然后从内存中取数据、这里就不过多讨论了。
1.通过Output Control 函数
<?php
$link=mysql_connect('localhost','root','admin');
mysql_select_db('message');
mysql_query('set names utf8');
$res=mysql_query('select * from message');
while($r=mysql_fetch_assoc($res)){
$arr[]=$r;
}
ob_start();
//缓冲区开始
echo '<table width=800px border=1>';
foreach($arr as $value){
echo '<tr>';
foreach($value as $v){
echo '<td>'.$v.'</td>';
}
echo '</tr>';
}
echo '</table>';
//获得缓冲区内容
$content=ob_get_contents();
//表示清楚缓冲区内容
ob_end_clean();
//把缓冲区内容写入到文件
function statichtml(){
global $content;
$targetfile='index.html';
$fp=fopen($targetfile,'w+') or die('打开文件出错');
fwrite($fp,$content);
fclose($fp);
}
//通过url参数来判断是否执行了生成
if ($_GET['static']){
statichtml();
}
mysql_close($link);
//header("location:{$targetfile}");
?>
<input type='button' value='生成' onclick="location.href='?static=true';" />
1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。
2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。
3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回False
以上方法只适用于单个页面对应生成静态页面。当然你可以通过url文件名的不同来生成对应php文件名的静态页面.这样就实现了多个页面生成静态页了
2.通过一些开源的模板引擎、比较优秀了有smarty phplib ....之类的模板引擎。它们的强大远远不止是生成静态页面.这里就不做过多说明了.
近期评论