3111-10

分类:php作者:admin 阅读次数:31122 views评论次数:0

有关php静态化处理

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 ....之类的模板引擎。它们的强大远远不止是生成静态页面.这里就不做过多说明了.

0条评论
发表评论

必填

必填