您现在的位置是:门户> 编程语言> HTML/CSS

分页显示之超级提速版
2020-05-18 12人围观 0条评论
简介分页显示之超级提速版
    大家知道,asp本身提供分页功能,但是,如果数据量很大的时候,分页显示起来,每换一页都要等N长时间,那是人们最讨厌的事情。那为什么每换一页都要这么长时间呢?其实,事实上每换一个页面,后台就从数据库中检索一次数据,这样一来数据量大了,自然速度缓慢。这当中我们可以看出它做了很多次重复的工作。数据的检索只要一次就够了,因为数据没被操作过,无论检索几次结果都是一样的。我们的目标就是要把这当中的重复检索次数减少到最少,1次或者2次。方法就是:把检索好的数据保存起来(比如你可以在登录成功后就在后台检索你要的数据,把检索出来的存为数组放入session,然后再跳转到要显示数据的页面),当然这里可以用session变量来保存(好像用cookie无法保存),不过我知道它的极限是多少,如果数据量大到使session变量溢出的话,那我也无计可施了。废话少说了,下面说明下怎么个保存数据法?
    首先要从数据库读取数据,建议使用存储过程读取
    Set cmd = Server.CreateObject("ADODB.Command")
    With cmd
    .ActiveConnection=conn
    .CommandType=&H0004 '存储过程
    .CommandText="guestbookpro"
    End With
    Dim resultRS, resultArray
    Set resultRS = cmd.Execute(, Null)
    If Not resultRS.EOF Then
    resultArray = resultRS.GetRows()
    End If
    Set resultRS = Nothing
    Set cmd = Nothing
    session("arr")=resultArray
    哈哈,数据已经读出,接下来就该对数据进行分页显示了。。
    page----当前页
    frompage----页面开始记录位置
    topage-----页面结束纪录位置
    pagesize----每页显示的记录条数
    n---记录总数
    yushu-----最后一页的记录数
    resultArray=session("arr")
    n=UBound(resultArray,2)+1
    pagesize=5
    'response.write "alert('"&n&"')"
    'response.write ""
    yushu=n mod pagesize
    if yushu=0 then
    totalpage=fix(n/pagesize)
    else
    totalpage=fix(n/pagesize)+1
    End If
    If request("page")="" Then
    page=1
    Else
    page=Int(request("page"))
    End if
    If page>totalpage Then
    page=1
    End If
    If page<=0 Then
    page=totalpage
    End If
    frompage=(page-1)*pagesize
    topage=frompage+pagesize-1
    if yushu=0 then

    frompage=(page-1)*pagesize
    topage=frompage+pagesize-1
    else

    frompage=(page-1)*pagesize
    topage=frompage+pagesize-1
    If page=totalpage Then
    frompage=(page-1)*pagesize
    topage=frompage+yushu-1
    End if
    end If
    有什么地方说的不对,请多多指教
    演示地址:http://fishbone31.w3.zccn.net 
    我这个网站因为上一页下一页刷新的都是整页,而非读取数据页[body.asp],所以速度不是很理想。
    账号密码均为test
分享:

文章评论