自動更新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;  
    }
?>
好,大功告成,自動刷新+靜態化而又不影響收錄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章