页面静态化的分类:
1,按照形式:两者的区别在于PHP生成静态页面的处理机制不同。
1)真静态
2)伪静态,就是url 重写
2,按照范围:
1)局部静态话(jquery,ajax)
2)全部静态化
在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板、缓存等实现页面静态化。
PHP生成静态HTML页面的方法
1、利用PHP模板生成静态页面
PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。
2、使用PHP文件读写功能生成静态页面
PHP生成静态页面实例代码
1. <?php
2. $out1 = "<html><head><title>PHP网站静态化教程</title></head>
3. <body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法
4. </body></html>";
5. $fp = fopen("leapsoulcn.html","w");
6. if(!$fp)
7. {
8. echo "System Error";
9. exit();
10. }
11. else {
12. fwrite($fp,$out1);
13. fclose($fp);
14. echo "Success";
15. }
16. ?>
3、使用PHP输出控制函数(Output Control)生成静态页面
输出控制函数(Output Control)也就是使用和控制缓存来生成静态HTML页面,也会使用到PHP文件读写函数。
PHP生成静态页面实例代码
1. <?php
2. ob_start();
3. echo "<html>".
4. "<head>".
5. "<title>PHP网站静态化教程</title>".
6. "</head>".
7. "<body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body>".
8. "</html>";
9.
10. $out1 = ob_get_contents();
11. ob_end_clean();
12. $fp = fopen("leapsoulcn.html","w");
13. if(!$fp)
14. {
15. echo "System Error";
16. exit();
17. }
18. else
19. {
20. fwrite($fp,$out1);
21. fclose($fp);
22. echo "Success";
23. }
24. ?>
实例如下
<?php
//首先查看缓存文件
if(file_exists("static.html")){
//缓存时间为3分钟
if(time()-filemtime("static.html")<60*3){
//将静态文件内容返回给客户端
$start_time = microtime();
echo "我是从静态文件中读取的数据:"."<br/>";
echo file_get_contents("static.html");
$end_time = microtime();
echo "静态文件使用时间:".($end_time-$start_time);
exit;
}
}
//如果是首次访问,或者是上次缓存的时间超过3分钟,则从数据库中读取数据
$host = "127.0.0.1";
$user = "root";
$password = "123456";
//记录开始时间
$start_time = microtime();
mysql_connect($host,$user,$password);
mysql_select_db("mydb");
mysql_query("set names utf8");
$sql = "SELECT name,address,email FROM users";
$resource = mysql_query($sql);
echo "我是从数据库中读取的数据:<br/>";
ob_start();//打开输出缓冲
echo "<table border='1'><tr><th>姓名</th><th>地址</th><th>Email</th></tr>";
//输出取得的信息
while($userInfo = mysql_fetch_assoc($resource)){
echo "<tr>";
echo "<td>".$userInfo['name']."</td>";
echo "<td>".$userInfo['address']."</td>";
echo "<td>".$userInfo['email']."</td>";
echo "</tr>";
}
$end_time=microtime();
$str=ob_get_contents();//获取缓冲区的内容
ob_end_flush();
echo "从数据库读数据的时间:".($end_time-$start_time);
file_put_contents("static.html",$str);
?>