自动更新ssi页面的思路汇总

最近在试图将页面静态化,有三种思路,
    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].'">&middot;'.$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].'">&middot;'.$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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;</td>
    <td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'pre',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">上一页</a></td>
    <td>&nbsp;</td>
    <td bgcolor="#eaeaea"><a href="javascript:pageshow($('#comment_list'),'next',pagenow,'public/data/page.php?type=ly&jsoncallback=?');">下一页</a></td>
    <td>&nbsp;</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].'">&middot;'.$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].'">&middot;'.$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;  
    }
?>
好,大功告成,自动刷新+静态化而又不影响收录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值