您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
使用php缓存机制-页面静态化
发布时间:2015-10-09 14:16:51编辑:雪饮阅读()
程序开销(由快到慢):
内存-》文件-》数据库
页面静态化思路:
当第一个用户访问某条信息后,我们使用ob的缓存机制,把内容缓存到html页面,当下一次访问时,直接访问html即可。
案例源码:
news_list.php:
<?php
//新闻列表
header("Content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
if(!$conn){die("数据库连接失败");}
mysql_select_db("ceshi",$conn);//mysql_select_db方法若不指定连接变量$conn则会自动使用最近的一次连接
$sql="select * from news";
$res=mysql_query($sql);
echo "<h1>新闻列表</h1>";
echo "<a href='#'>添加新闻</a><hr/>";
echo "<table>";
echo "<tr><td>id</td><td>标题</td><td>查看详情</td></tr>";
while($row=mysql_fetch_assoc($res)){
echo "<tr><td>{$row['id']}</td><td>{$row['title']}</td><td><a href='shownews.php?id={$row['id']}'>查看详情</a></td></tr>";
}
echo "</table>";
//关闭资源
mysql_free_result($res);//释放连接
mysql_close($conn);//关闭连接
?>
shownews.php:
<?php
header("Content-type:text/html;charset=utf-8;");
$id=$_GET["id"];
//静态化页面
//思路,如果已经存在html,直接访问,否则通过php静态化一个html页面
$html_filename="news_id".$id.".html";
//filemtime()=>获取文件的最后修改时间(时间戳,单位为秒)
//文件存在并且未超时(5秒即超时)
if(file_exists($html_filename) && time()-filemtime($html_filename)<=5){
//直接访问html页面
echo "存在html静态文件:<br/>";
echo file_get_contents($html_filename);
exit;//不退出将会继续执行下面语句,那么优化适得其反
}
$conn=mysql_connect("localhost","root","root");
if(!$conn){die("数据库连接失败");}
mysql_select_db("ceshi",$conn);//mysql_select_db方法若不指定连接变量$conn则会自动使用最近的一次连接
$sql="select * from news where id=$id";
$res=mysql_query($sql);
echo "更新中。。。";
ob_start();
if($row=mysql_fetch_assoc($res)){
echo "<table>";
echo "<tr><td>详细内容2</td></tr>";
echo "<tr><td>{$row['title']}</td></tr>";
echo "<tr><td>{$row['content']}</td></tr>";
echo "</table>";
}
else{
echo "没有结果";
}
$html_content=ob_get_contents();//取出缓存
$html_filename="news_id".$id.".html";//生成静态文件名
$my_header="<!doctype html><html><head><meta charset='utf-8'><title>无标题文档</title></head><body>";
$my_foot="时间:".time()."</body></html>";
file_put_contents($html_filename,$my_header.$html_content.$my_foot);
mysql_free_result($res);
mysql_close($conn);
?>
代码:
1、创建测试数据库:(set names gbk)
2、Create table news(id int unsigned primary key auto_increment,title varchar(128) not null,Content varchar(256) not null, filename varchar(32) engine=MyISAM)
3、测试数据:
4、insert into news(title,content) values('hello1','北京你好');
关键字词:缓存,静态化
上一篇:php页面静态化-缓存机制详解
下一篇:php中正则表达式与伪静态