分頁顯示之超級提速版_經驗交流

來源:互聯網
上載者:User
大家知道,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
  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.