最近在試圖將頁面靜態化,有三種思路,
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;
}
?>