概念
PHP的静态化分为:纯静态化和伪静态化;其中纯静态化又分为:完全静态化和局部静态化。
-
纯静态化:是将PHP生成的生成的动态页面保存为静态的HTML文件,当用户访问该静态页面的时候,会先检查该页面是否有缓存,有则直接访问页面,没有则需要请求PHPserver服务生成页面。
1) 局部静态化:是在生成的静态文件中,还有局部的数据还是通过Ajax技术动态获得。
1)完全静态化:即不存在动态获取数据的情况,所有内容都来自静态的HTML页面。 -
伪静态化:其实质还是动态访问其实质还是动态生成数据。其通过改写访问地址,能够通过URL的PATHINFO模式来改动它。让它看上去更像一个静态页面。即是url 重写
PHP中ob缓存常用的函数
ob_start():开启缓存机制
ob_get_contents():获取ob缓存中的内容
ob_clean()清除ob缓存中的内容,但不关闭缓存
ob_end_clean() 清除ob缓存中的内容,并关闭缓存
ob_flush 清空缓存,输出内容,但不关闭缓存
ob_end_flush 清空缓存,输出内容,并关闭缓存
实例
<?php
$id=$_REQUEST['id'];
//判断缓存文件是否存在,如果存在,直接输出
if(file_exists('content'.$id.'.html')){
echo file_get_contents('content'.$id.'.html');
return;
}
//开启缓存机制
ob_start();
//到数据库中查询所需要的内容
$conn=mysql_connect("localhost","root","root");
mysql_select('db');
mysql_query('set names utf8');
$sql="select content from table_name where id=$id";
$res=mysql_query($sql);
$row=mysql_fetch_assoc($res);
$content=$row[0];
mysql_free_result($res);
mysql_close($conn);
echo $content;
//将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出
file_put_contents('content'.$id.'.html',ob_get_contents());
?>
HTML静态化的好处
- 减轻服务器负担,浏览网页无需调用系统数据库。
- 有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
- 加快页面打开速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
- 网站更安全,HTML页面不会受php程序相关漏洞的影响;观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。数据库出错时,不影响网站正常访问。
- 数据库出错时,不影响网站的正常访问。
最主要是可以增加访问速度,减轻服务器负担,当数据量有几万,几十万或是更多的时候你知道哪个更快了. 而且还容易被搜索引擎找到。生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。