在非静态化的页面中一般其响应过程为:连接数据库或缓存服务器->获取数据->填充模板->展示。
对这种动态的页面程序,系统需要对其语句先进行语法分析、编译然后运行最后才能够将其展示在页面上。用户每次点击浏览都需经过这一过程,这对于系统来说无疑是个沉重的负担,而且拖慢了系统的响应速度。而在静态化的页面中(如HTML文件),它直接就可以展示内容了,不必经过语法分析、编译、运行和连接数据库服务器或缓存服务器去获取数据加载模板,响应非常快。为了优化响应时间,降低系统的消耗,我们可以将页面中不常改动的内容静态化。静态化可分为纯静态化和局部动态化。
一、纯静态化
实现纯静态化的常用方式主要有三种:
1.页面设置缓存时间:
如:在某个index.php文件中的内容
<?php
//如果存在静态文件并且其缓存时间不超过设定的阈值(这里设置180秒),则直接加载该静态页面;
//否则将动态页面的缓存区内容重新写入静态文件并清除缓存区,然后显示静态文件
if(is_file('index.shtml') && (time()-filemtime('index.shtml'))<180){
require_once('index.shtml');
}else{
//连接数据库
$con = mysql_connect('localhost','username','password');
mysql_select_db('dbname',$con);
$result = mysql_query('select * from tablename',$con);
$contents = array();
while($row = mysql_fetch_array($result)){
//获取数据
$contents[] = $row;
}
ob_start();
//引入模板文件
require_once('template.php');
//将缓存区的内容写入静态文件
if(file_put_contents('index.shtml',ob_get_clean())){
require_once('index.shtml');
}else{
echo "An error has occurred";
}
}
?>
在浏览器输入该index.php的地址即可显示其纯静态化页面。但这种方法有一个弊端,就是如果用户不输入index.php而输入的一直是index.shtml那么该页面显示的内容就算过了缓存时间也不会更新。
2.手动触发更新:
手动触发纯静态页面的更新的做法是在后台管理页面上设置一个触发更新的按钮,一旦点击更新某个页面,则将该页面生成的动态内容载入到该静态文件中。
3.在Linux系统下可以使用crontab定时任务,定时更新静态化页面:
在Linux系统下可以使用crontab命令设置每隔一个时间段执行更新某个页面内容的任务,从而实现静态内容的更新操作。
二、局部动态化
局部动态化的实现主要是通过在模板页面的ajax技术来实现。首先先编写一个接口文件,该接口文件从数据库获取需要的数据并返回转化为json格式后的数据;然后在JavaScript里使用AJAX获得从接口返回的json数据,并将其填充到模板中。