ご存知のとおり、ASP 自体にはページング機能が備わっていますが、データ量が多いとページングが表示されると、ページを切り替えるたびに長時間待たなければなりません。 。では、なぜページを切り替えるのにこれほど時間がかかるのでしょうか?実際には、ページが切り替わるたびにバックグラウンドでデータベースからデータを取得するため、データ量が多くなり、当然速度も遅くなります。多くの反復タスクが実行されたことがわかります。データは操作されていないため、データの取得は 1 回だけで十分であり、何度取得しても結果は同じです。私たちの目標は、繰り返される検索の回数を最小限の 1 回または 2 回に減らすことです。方法は、取得したデータを保存します (たとえば、ログインに成功した後にバックグラウンドで必要なデータを取得し、取得したデータを配列としてセッションに保存し、表示したいページにジャンプします)。データ)、もちろんセッション変数を使用して保存することはできます(Cookieを使用して保存することはできないようです)が、データ量が多すぎてセッション変数がオーバーフローする場合、その制限はわかります。私にできることは何もありません。早速、データを保存する方法を説明しましょう。
まず、データベースからデータを読み取る必要があります。
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
を使用することをお勧めします。 ActiveConnection=conn
.CommandType =&H0004 'Store Procedure
.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 "
'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 pagepage=totalpage
End If
frompage=(page-1)*pagesize
toppage=frompage+pagesize-1
if yushu=0 then
frompage=(page-1)*pagesize
toppage=frompage+pagesize-1
else
frompage=(page-1)* pagesize
toppage=frompage+pagesize- 1
If page=totalpage then
frompage=(page-1)*pagesize
toppage=frompage+yushu-1
End if
end
何かが間違っている場合は、アドバイスをお願いします
デモ アドレス: http://fishbone31.w3.zccn.net
私の Web サイトでは、ページを読む代わりに前後のページが更新されるため、ページ全体が更新されます。データ ページ [body.asp] なので、速度は理想的ではありません。
アカウントとパスワードは両方ともテストです