您好,欢迎访问一九零五行业门户网

PHP大型网站的提速(页面静态化)(二)

页面静态化有两种1.真静态2.伪静态 真静态有两个方法 1.使用php的ob缓存机制来实现页面静态化 2.使用模板技术来实现页面静态化 uob缓存是什么?怎么用? 1.快速入门 注意:在php5.3这个版本,ob默认是打开的. php5.2这会报告waring 我们可以通过php.ini中可以
页面静态化有两种 1. 真静态 2. 伪静态
真静态有两个方法
1. 使用php 的 ob缓存机制来实现 页面静态化
2. 使用模板技术来实现页面静态化
u ob缓存是什么?怎么用?
1. 快速入门
注意: 在php5.3 这个版本,ob默认是打开的.
php5.2 这会报告waring
我们可以通过 php.ini 中可以配置是否启用 ob
初步的认识:
? 我们可以认为,在apache的服务器端,有两个缓存 ob缓存(这个程序员可以控制)
,程序缓存是必须有的.
当有一段代码  如果有 echo ,当你启用 ob缓存,那么这些echo 优化放在ob缓存中, 如果没有ob缓存,则直接放入了程序缓存.
如果你只有程序缓存,需要大家清楚,header 语句前,不能有 echo 语句,否则有提示
headers already sent by
截图:
ob的相关函数.
说明的代码:
ob3.php
 问题?
3.1 网址不是静态网址, 伪静态网站
3.2 如果我们的内容修改,我们将看不到修改的页面
先搞定这个问题.,
方法1: 通过比较文件的时间来 定时更新,即可,对于对应实时性要求不高的网站,是完全没有问题. 
if(file_exists($html_name) && filemtime($html_name)+30> time() ){
echo 使用缓存;
echo file_get_contents($html_name);
exit;
}
方法2; 现在我们可以这样考虑,当我们添加新闻,修改新闻时,就实时的更新数据库同时去更新静态页面->使用模板技术
实现思路: smarty 模板替换-> 正则表达式
最总代码:
newslist.php
header(content-type:text/html;charset=utf-8);
echo 新闻列表;
echo 添加新闻;
echo ;echo id 标题
;
//mysql.class.php 工具类来完成数据的获取
$con=mysql_connect(localhost,root,root);
if(!$con){
die(连接失败);
}
mysql_select_db(newsdb,$con);
$sql=select * from news;
$res=mysql_query($sql,$con);
while($row=mysql_fetch_assoc($res)){
echo {$row['id']} {$row['title']}
;
}
echo
;
//关闭资源
  mysql_free_result($res);
 mysql_close($con);
addnews.html
新闻标题
新闻标题
新闻内容
newsaction.php
function myreplace($row,$title,$content){
$row= str_replace(%title%,$title,$row);
$row= str_replace(%content%,$content,$row);
return $row;
}
//获取
$oper=$_post['oper'];
if($oper==add){
//思路
$title=$_post['title'];
$content=$_post['content'];
//入库. mysql.class.php
$con=mysql_connect(localhost,root,root);
if(!$con){
die(连接失败);
}
mysql_select_db(newsdb,$con);
$sql=insert into news (title,content) values('$title','$content');
if(mysql_query($sql)){
//获取新闻id
$id=mysql_insert_id();
$html_filename=news-id.$id..html;
$fp_html_file=fopen($html_filename,w);
//读取模板文件
$tpl_file=fopen(news.tpl,r);
//一行一行的读
while(!feof($tpl_file)){
//读入一行
$row=fgets($tpl_file);
//我就一行一行的替换,我写一个函数来专门替换占位符.
$row=myreplace($row,$title,$content);
//把$row写入到新文件
fwrite($fp_html_file,$row);
}
//关闭文件.
fclose($fp_html_file);
fclose($tpl_file);
echo 添加成功,  点击查看新闻;
}else{
echo 添加失败!;
}
}else if($oper==update){
}else if($oper==delete){
}
其它类似信息

推荐信息