| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1063 人关注过本帖
标题:求助一个静态分页的问题
只看楼主 加入收藏
w462156
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-11-10
收藏
 问题点数:0 回复次数:6 
求助一个静态分页的问题

前些日.本人自写了一个小型新闻发布系统.用FSO每次写入生成页面

其中新闻分页也是用FSO写的.现在问题来了.随着新闻的慢慢增加,每次的运算越来越多.服务器也更慢了.

说要是因为每次更新的时候.要重新计算新闻总条数.然后分页.如果新闻有上万条.那不是有点恐怖.

我想像新浪,QQ等这些门户网站应该不是这样生成的吧.如果每次更新.那服务器不是要死掉.

不知道这个问题.哪位高手有没有解决的好办法,请指点一下.

搜索更多相关主题的帖子: 静态 新浪 服务器 FSO 门户网站 
2005-11-18 09:26
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
有一种叫反向分页,不用重新生成,你自已去找一下,我还没做过.
看下你的静态分页的原理是如何的?

中国人的财富网:http://www..cn/
2005-11-18 11:01
w462156
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-11-10
收藏
得分:0 

不知道这里可以贴出来不.反向分页?是从数据的最后一条开始往前分吗?

我想了一下.但想不出好法子.

如果从最后一条开始分的话.那最新的纪录往往只有几条.不能满.这也是个问题.

[此贴子已经被作者于2005-11-18 11:23:58编辑过]

2005-11-18 11:11
w462156
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-11-10
收藏
得分:0 

<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="&nbsp;" ' kg:空格;
fy="&nbsp;"

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%"">&nbsp;<a href=""../../"&Rsc("NC_id")&"/index/index_1.html"">"&Rsc("NC_Name")&"</a>&nbsp;|&nbsp;<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编辑过]

2005-11-18 11:18
w462156
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-11-10
收藏
得分:0 

有没有哪位做过静态分页碰到我这种情况的.


能不能贴一段代码出来看看.是反向分页的也行.

2005-11-18 14:39
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
TypeItem=request("Item")
select case TypeItem
case "mymusic"
set Music_rs=server.CreateObject("Adodb.recordset")
MusicSql="select * from zhan_music order by music_id desc"
Music_rs.open MusicSql,conn,1,1
Music_name="Music"
const Music_maxperpage=6 '...................................................................................................
mpage=Music_rs.pagecount
Music_rs.pagesize=Music_maxperpage
currentpage=request("PageNo")
if currentpage="" then
currentpage=1
elseif currentpage<1 then
currentpage=1
else
currentpage=clng(currentpage)
if currentpage>Music_rs.pagecount then
currentpage=Music_rs.pagecount
end if
end if
if not isnumeric(currentpage) then
currentpage=1
end if
totalput=Music_rs.recordcount
if totalput mod Music_maxperpage=0 then
n=totalput\Music_maxperpage
else
n=totalput\Music_maxperpage+1
end if
if n=0 then
n=1
end if
Music_rs.move(currentpage-1)*Music_maxperpage
for i=1 to Music_rs.pagesize
if Music_rs.eof then
Exit For
end if
My_Music=My_Music&"<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr align='center'>"
My_Music=My_Music&"<td width='8%' height='18' align='left'>&nbsp;</td>"
My_Music=My_Music&"<td width='42%' align=left>"&i&":"&Music_rs("music_name")&"</td><td width='19%'>"&Music_rs("music_autor")&"</td>"
My_Music=My_Music&"<td width='11%'><img src='../Mp3/img/real.gif' width='19' height='17' onClick=winopen("&Music_rs("music_id")&")>"
My_Music=My_Music&"</td><td width='10%'>歌词</td><td width='10%'>"
My_Music=My_Music&"<a href=../MP3/"&Music_rs("music_url")&"><img src=../Mp3/img/download.gif width=16 height=16 border=0 alt=请右键另存为...>"
My_Music=My_Music&"</a></td></tr></table>"
Music_rs.movenext
next
Music_rs.close
set Music_rs=nothing
conn.close
set conn=nothing
PageLoad=PageLoad&"<form name='form1'>"
PageLoad=PageLoad&"&nbsp;页数<font color=red><b>"&currentpage&"</b></font>/"&n&"&nbsp;"
k=currentpage
if k<>1 then
PageLoad=PageLoad&"<a href="&Music_Name&"_1.htm>首页</a>&nbsp;"
PageLoad=PageLoad&"<a href="&Music_Name&"_"&k-1&".htm>上一页</a>&nbsp;"
else
PageLoad=PageLoad&"首页&nbsp;上一页&nbsp;"
end if
if k<>n then
PageLoad=PageLoad&"<a href="&Music_Name&"_"&k+1&".htm>下一页</a>&nbsp;"
PageLoad=PageLoad&"<a href="&Music_Name&"_"&n&".htm>尾页</a>&nbsp;"
else
PageLoad=PageLoad&"下一页&nbsp;尾页&nbsp;"
end if
PageLoad=PageLoad&"共有<font color=blue><b>"&totalput&"</b></font>首歌"
PageLoad=PageLoad&"<select name='menu1' onChange=MM_jumpMenu('parent',this,0)>"
for i=1 to n
PageLoad=PageLoad&"<option value="&Music_Name&"_"&i&".htm "
if cint(i)=cint(currentpage) then PageLoad=PageLoad& " selected"
PageLoad=PageLoad&">第"&i&"页</option>"
next
PageLoad=PageLoad&"</select></form>"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
set type_d = fso.opentextfile(server.mappath("Music/music.html"),1,True)
pencat= type_d.ReadAll
pencat=replace(pencat,"$Menu$",Menu)
pencat=replace(pencat,"$MyMusic$",My_Music)
pencat=replace(pencat,"$PageLoad$",PageLoad)
Set type_x = fso.CreateTextFile(server.mappath("Music/"&Music_Name&"_"&currentPage&".htm"))
type_x.WriteLine pencat
set fso = nothing
type_d.close
type_x.close
response.write "<br>已生成/要生成分类:<font color=#FF0000>"&currentPage&"</font>/<font color=#FF0000><b>"&n&"</b></font>个,"
if n=<currentPage then
response.write "操作完成!"
response.Write("<a href='#' onclick=history.back()>返回</a>")
response.end
else
response.write "<br>已生成/此类分页:<font color=#FF0000>"&currentPage&"</font>/<font color=#FF0000><b>"&n&"</b></font>个,"
response.write "<meta http-equiv=Refresh content='0; URL=Admin_Index_Html.asp?Item="&TypeItem&"&pageNo="&currentPage+1&"'>"
end if

原理是一样的

中国人的财富网:http://www..cn/
2005-11-19 21:30
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 

你那个每次移动到当前页的第一条记录在哪里看得出


中国人的财富网:http://www..cn/
2005-11-19 21:35
快速回复:求助一个静态分页的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056752 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved