前些日.本人自写了一个小型新闻发布系统.用FSO每次写入生成页面
其中新闻分页也是用FSO写的.现在问题来了.随着新闻的慢慢增加,每次的运算越来越多.服务器也更慢了.
说要是因为每次更新的时候.要重新计算新闻总条数.然后分页.如果新闻有上万条.那不是有点恐怖.
我想像新浪,QQ等这些门户网站应该不是这样生成的吧.如果每次更新.那服务器不是要死掉.
不知道这个问题.哪位高手有没有解决的好办法,请指点一下.
<font color="#ff0000">更新信息开始......</font><br/>
<br/>
<%
On Error Resume Next
'更新新闻列表,如果不将记录集值取出来,将会发生意外错误.
Set Rs=Server.CreateObject("ADODB.Recordset")
Sql="SELECT * FROM NC_Table ORDER BY NC_id DESC"
Rs.Open Sql,Conn,1,3
Do While Not Rs.Eof
NC_id="MoreNews"
NC_Name=Rs("NC_Name")
'取得新闻列表的数据,并生成多分页页面.
Sqla="SELECT N_name,N_title,N_classes,N_time,N_id FROM N_Table ORDER BY N_ID DESC"
Set Rsa=Server.CreateObject("ADODB.Recordset")
Rsa.Open Sqla,Conn,1,3
Call createsplit(Rsa.RecordCount)
If Rs.Eof Then Exit Do
Rs.MoveNext
Loop
'写入系统日志
Call ClearRs
Dim Thing
Thing="更新所有新闻"
Call Addsystem(Session("admin"),thing)
%>
<br/>
<font color="#ff0000">更新信息结束......</font>
'分页函数
<%
function createsplit(totle)
dim dde,fcontent,fkn,kg,pn,pz,nz ' fcontent:内容
dde=1 ' dde:当前页;
pn=100 ' pn每页多少条记录;
nz=totle ' nz记录总条数;
fkn=".html" ' fkn:扩展名;
kg=" " ' kg:空格;
fy=" "
if nz mod pn = 0 then '计算总页数
pz = nz\pn 'pz:总页数
else
pz = nz\pn+1
end if
U=1
for i=1 to nz
If U>100 Then U=U Mod 100
Set Rsc=Conn.Execute("Select * From NC_Table Where NC_id="& Rsa("N_classes"))
ListStr=ListStr&"<tr><td align=""left"" width=""85%""> <a href=""../../"&Rsc("NC_id")&"/index/index_1.html"">"&Rsc("NC_Name")&"</a> | <a href=""../../"&Rsa("N_Name")&""" target=""_blank"" title=""查看新闻:"&Rsa("N_title")&""" class=""blue"">"&Left(Rsa("N_title"),25)&"</a></td><td class=""body3"" width=""15%"">"&Rsa("N_time")&"</td><!--<td width=""15%"">点击<font color=""#ff0000""><script language='javascript' src='../../ListCounters.asp?N_id="&RSa("N_id")&"'></script></font>次</td>--></tr>"
if ((i>1 and (i mod pn=0)) or (i=nz)) then
if dde>1 then
fy="<a href='index_1"& fkn &"' title='第一页'><font face=webdings>9</font></a>"& kg
fy=fy & "<a href='index_"& (dde-1) & fkn &"' title='上一页'><font face=webdings>7</font></a>"& kg
else
fy=fy & "<font face=webdings>9</font>" & kg
fy=fy & "<font face=webdings>7</font>" & kg
end if
'if dde=i then
' col="#ff0000"
'else
' col=" "
'end if
'ddes=ddes&kg&"<a href=""../../../NewsFile/"&NC_id&"/index/index_"&dde&".html""><font color="&col&">["&dde&"]</font></a>"
fy=fy&ddes&kg
if dde<pz then
fy=fy & "<a href='index_"& (dde+1) & fkn &"' title='下一页'><font face=webdings>8</font></a>"& kg
fy=fy & "<a href='index_"& pz & fkn &"' title='末一页'><font face=webdings>:</font></a>"& kg
else
fy=fy & "<font face=webdings>8</font>" & kg
fy=fy & "<font face=webdings>:</font>" & kg
end if
'fy=fy & kg & "第<font color=""#ff0000"">"&dde&"</font>页|共<font color=""#ff0000"">"&pz&"</font>页" & kg
fy="<table width=""50%"" border=""0"" cellspacing=""1"" cellpadding=""0"" bgcolor=""#cccccc""><tr bgcolor=""#ffffff""><td title=""当前页新闻数量"" width=""10%"" align=""center""><font color=""#ff0000"">"&U&"</font></td><td title=""新闻总数量"" width=""10%"" align=""center""><font color=""#ff0000"">"&nz&"</font></td><td width=""30%"" align=""center"">"&fy&"</td><td title=""当前第"&dde&"页/总共有"&pz&"页"" width=""35%"" align=""center"">第"&dde&"页/共"&pz&"页</td><td width=""15%"" align=""center""><a href=""#Top"" class=""blue"">↑TOP</a></td></tr></table>"
Liststr=liststr&"<tr><td colspan=""3"" align=""right"" height=""60"" valign=""middle"">"&fy&"</td></tr>"
'读取列表模板
Dim htmlfiles,ML_comment
htmlfiles=Server.MapPath("../MoBan/index.html")
Call Ready(htmlfiles)
ML_comment=htmlfiles
'将模板进行元素替换.
ML_comment=Replace(ML_comment,"$ML_classes$","<a href=""../../MoreNews/index/index_1.html"" class=""blue"">超男网全部资讯</a>")
ML_comment=Replace(ML_comment,"$ML_leftstr$",Lstr)
ML_comment=Replace(ML_comment,"$ML_comment$",Liststr)
'断定文件夹是否存在.并将数据写入文件.生成静态页.
Call MakeFloder("../NewsFile/"&NC_id&"/index/")
Set Fso2 = Server.CreateObject("Scripting.FileSystemObject")
Set Fout2 = Fso2.CreateTextFile(Server.MapPath("../NewsFile/"&NC_id&"/index/index_"&dde&".html"))
Fout2.WriteLine ML_comment
Fout2.close
ListStr=""
response.write "新闻总列表|第" & dde & "页生成 ../NewsFile/"&NC_id&"/index_"&dde&".html,单击<a href=../NewsFile/"&NC_id&"/index/index_"&dde&".html target=""_blank"">查看</a><br/>"
fcontent="<br/>"
dde=dde+1
end if
Rsa.MoveNext
U=U+1
next
Rsc.Close
Set Rc=Nothing
end function
%>
这是好不容易在网上找到的参考代码才写出来的一个程序.适用于生成静态分页.
[此贴子已经被作者于2005-11-18 11:29:49编辑过]