最近在试图将页面静态化,有三种思路,
1 静态生成html,需要在发布文章的时候点击生成,缺点是需手工生成,而且每一次改动都需要重新生成整个页面。实时性差吗,不能保证是最新发布的。
2 ajax调用,不用手工生成,js直接读取最新显示,实时性好,但缺点是搜索引擎不收录。
3 ssi 不需要手动生成,自动完成静态化,但是还有有点小的问题,就是实时性不好,尽管有的可以支持包涵动态文件,但兼容性不好。
结合这三种思路,于是想到 了用ajax+ssi的思路,先用ssi调用完成静态化,并用js定时更新所包含的ssi片段
核心代码如下
js代码
function ssi_update(ssi_name,ssi_time,templates){//alert(ssi_name);
好,大功告成,自动刷新+静态化而又不影响收录。
$.get("public/data/ajax.php?action=get_time",function(data){var t=data-ssi_time;//alert(t);
if(t>360){$.get("public/data/ssi.php?ssi_name="+ssi_name,function(data){//alert(data);
});}
});
//每隔6分钟更新一次
}
html代码
<!--#include file="public/data/ssi/ssi_rdwt_comment.shtml"--><script>
ssi_update(ssivar,mtbd_time,"asdas");
</script>
ssi子文件中写入
<script>var ssivar="rdwt_commemnt";
var mtbd_time="1317103220";</script>
ajax.php
<?php
include '../../include/common.php';
switch($_GET['ssi_name']){
case "news":
$query=$db->query("select * from jzadmin_news where 1 limit 14");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_news.='<li><a href="show.php?id='.$value[id].'">·'.$value[title].'</a></li>';
}
$ssi_news.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("public/ssi/ssi_news.shtml",$ssi_news);
break;
case "answer":
$query=$db->query("select * from jzadmin_news where 1 limit 4");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_answer.='<li><a href="show.php?id='.$value[id].'">·'.$value[title].'</a></li>';
}
$ssi_answer.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_answers.shtml",$ssi_answer);
break;
case "fhxx":
$ssi_fhxx='<div class="scroll_multl"><table class="mulitline" cellpadding="0" cellspacing="0"><tr><th>收件人</th><th>地区</th><th>快递公司</th><th>发货日期</th><th>预到日期</th><th>包裹票号</th></tr>';
$query=$db->query("select * from jzadmin_fhxx where 1 limit 10");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_fhxx.='<tr height="22">
<td align="center" width="67">'.$value[name].'</td>
<td align="center" width="156">'.$value[province].$value[city].'</td>
<td align="center" width="104">'.$value[postcorp].'</td>
<td align="center" width="87">'.date('Y-m-d',$value[date_fh]).'</td>
<td align="center" width="135">'.date('Y-m-d',$value[date_yd]).'</td>
<td align="center">'.$value[num].'</td></tr>';
}
$ssi_fhxx.='</table></div><script src="public/js/jquery.lazyload.js" type="text/javascript"></script><script>$(function(){$("img").lazyload({ threshold : 600 });$("#ac").floatdiv("right");';
$ssi_fhxx.='var _wrap=$(\'table.mulitline\');';
$ssi_fhxx.='var _interval=2000;';
$ssi_fhxx.='var _moving;';
$ssi_fhxx.='_wrap.hover(function(){ ';
$ssi_fhxx.='clearInterval(_moving);';
$ssi_fhxx.='},function(){ ';
$ssi_fhxx.='_moving=setInterval(function(){ ';
$ssi_fhxx.='var _field=_wrap.find(\'tr:eq(1)\');';
$ssi_fhxx.='var _h=_field.height();';
$ssi_fhxx.='_field.animate({marginTop:-_h+\'px\'},600,function(){';
$ssi_fhxx.='_field.css(\'marginTop\',0).appendTo(_wrap);';
$ssi_fhxx.='}) ';
$ssi_fhxx.='},_interval)';
$ssi_fhxx.='}).trigger(\'mouseleave\');';
$ssi_fhxx.='});';
$ssi_fhxx.='</script>';
$ssi_fhxx.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_fhxx.shtml",$ssi_fhxx);
break;
case "ly":
$query=$db->query("select * from jzadmin_comments where 1 limit 7");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_ly.='<li class="top6_p1">Q: '.$value[title].'</li><li class="top6_p3"><span class="top6_p2">A:</span>'.$value[reply].'</li>';
}
$ssi_ly.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_ly.shtml",$ssi_ly);
break;
case "mtbd":
$query=$db->query("select * from jzadmin_news where 1 limit 10");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_mtbd.='<li><a href="'.$value[id].'><strong>环球财经:</strong>'.$value[title].'</a></li>';
}
$ssi_mtbd.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_mtbd.shtml",$ssi_mtbd);
break;
case "fx_comemnt":
$query=$db->query("select * from jzadmin_comments where 1 limit 7");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_other_comment.='<div class="wd_main"><div class="wd_wt">'.$value[title].'<br /><span class="wd_p1">['.date("Y.m.d",$value[time]).']</span></div><div class="wd_sj">买家:<span class="wd_p2">'.$value[username ].'</span></div><div class="al_x"></div></div>';
}
$ssi_other_comment.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_fx_comment.shtml",$ssi_other_comment);
break;
case "rdwt_commemnt":
$query=$db->query("select * from jzadmin_comments where 1 limit 18");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_rdwt_commemnt.='<div class="wd_main"><div class="wd_wt">'.$value[title].'<br /><span class="wd_p1">['.date("Y.m.d",$value[time]).']</span></div><div class="wd_sj">买家:<span class="wd_p2">'.$value[username ].'</span></div><div class="al_x"></div></div>';
}
$ssi_rdwt_commemnt.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_rdwt_comment.shtml",$ssi_rdwt_commemnt);
break;
case "fx_answers":
$query=$db->query("select * from jzadmin_news where catid=5 limit 5");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_fx_answers.=' <li><strong>问:'.$value[title].'</strong></li><li><span>答:</span>'.$value[content].'</li>';
}
$ssi_fx_answers.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_fx_answers.shtml",$ssi_fx_answers);
break;
case "rdwt_answers":
$ssi_rdwt_answers='';
$query=$db->query("select * from jzadmin_news where catid=5 limit 7");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$ssi_rdwt_answers.=' <li><strong>问:'.$value[title].'</strong></li><li><span>答:</span>'.$value[content].'</li>';
}print_r($ssi_rdwt_answers);
$ssi_rdwt_answers.='<script>var ssivar="'.$_GET['ssi_name'].'";
var mtbd_time="'.time().'";</script>';
file_put_contents("ssi/ssi_rdwt_answers.shtml",$ssi_rdwt_answers);
break;
}
?>
问题解决,但是分页怎么办呢,不急,用ajax来做
<table border="0" cellspacing="0" cellpadding="0" class="wd_left">
<tr bgcolor="#ffe9f5" style="padding:3px 0;">
<td width="610"> <span class="STYLE1">反馈</span></td>
<td width="100"><span class="STYLE1">反馈者</span></td>
</tr>
<tr>
<td colspan="2" id="comment_list">
<!--#include file="public/data/ssi/ssi_rdwt_comment.shtml"--><script>
ssi_update(ssivar,mtbd_time,"asdas");
</script>
</td>
</tr>
<tr><script>
/*function request(paras){
var url = location.href;
var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");
var paraObj = {}
for (i=0; j=paraString[i]; i++){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
}
var returnValue = paraObj[paras.toLowerCase()];
if(typeof(returnValue)=="undefined"){
return "1";
}else{
return returnValue;
}
}
var pagenow=request('page');*/
var pagenow=1;
</script>
<td colspan="2">
<table width="555" border="0" cellspacing="0" cellpadding="0" class="wd_fy">
<tr>
<td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'first',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">首页</a></td>
<td> </td>
<td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'pre',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">上一页</a></td>
<td> </td>
<td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'next',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">下一页</a></td>
<td> </td>
<td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'last',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">尾页</a></td>
<td>页次:<strong>1/19</strong>页</td>
<td>共200条记录</td>
<td>11条记录/页</td>
</tr>
</table>
function pageshow(obj,pagetag,page,url){
var pagesize=18;
$.get(url,{op:"count",pagesize:pagesize},function(data){
if(pagetag=="first")pagenow=1;
else if(pagetag=="pre")pagenow=(page-1<1)?1:(page-1);
else if(pagetag=="next")pagenow=(page+1>=data)?data:(page+1);
else if(pagetag=="last")pagenow=data;
$.getJSON(url,{pagenow:pagenow,pagesize:pagesize},function(data1){
json=eval(data1);
var html="";
for(var key in json.data) {
html=html+'<div class="wd_main"><div class="wd_wt">'+json.data[key].title;
html=html+'<br /><span class="wd_p1">['+json.data[key].addtime+']</span></div><div class="wd_sj">买家:<span class="wd_p2">'+json.data[key].username+'</span></div><div class="al_x"></div></div>';
}
obj.html(html);
});
});
}
<?php
include '../../include/common.php';
switch($_GET['type']){
case "news":
$query=$db->query("select * from jzadmin_news where 1 limit 14");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {$value=encodeGBK($value);
$ssi_news.='<li><a href="show.php?id='.$value[id].'">·'.$value[title].'</a></li>';
}
echo $ssi_news;
break;
case "answer":
$query=$db->query("select * from jzadmin_news where 1 limit 4");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {$value=encodeGBK($value);
$ssi_answer.='<li><a href="show.php?id='.$value[id].'">·'.$value[title].'</a></li>';
}
echo $ssi_answer;
break;
case "fhxx":
$query=$db->query("select * from jzadmin_fhxx where 1 limit 10");
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {$value=encodeGBK($value);
$ssi_fhxx.='<tr height="22">
<td align="center" width="67">'.$value[name].'</td>
<td align="center" width="156">'.$value[province].$value[city].'</td>
<td align="center" width="104">'.$value[postcorp].'</td>
<td align="center" width="87">'.date('Y-m-d',$value[date_fh]).'</td>
<td align="center" width="135">'.date('Y-m-d',$value[date_yd]).'</td>
<td align="center">'.$value[num].'</td></tr>';
} echo $ssi_fhxxs;
break;
case "ly":
$pagesize=$_GET[pagesize];
if($_GET[op]=="count"){
$count=$db->num_rows($db->query("select * from jzadmin_comments where 1"));
echo intval($count/$pagesize);
}else{
$pagenow=$_GET[pagenow]-1;
$lylist[count]=$db->num_rows($db->query("select * from jzadmin_comments where 1"));
$query=$db->query("select username,title,addtime from jzadmin_comments where 1 limit ".$pagenow*$pagesize.",".$pagesize);
while($value=$db->fetch_array($query, $result_type = MYSQL_ASSOC)) {
$value[username]=mb_convert_encoding($value[username],"UTF-8","GBK");
$value[title]=mb_convert_encoding($value[title],"UTF-8","GBK");
$value[addtime]=date("Y-m-d",$value[addtime]);
$lylist[data][]=$value;
}
echo $_GET['jsoncallback'].'('.json_encode($lylist).")";
}
break;
}
?>