우리 모두 알고 있듯이 ASP 자체적으로 페이징 기능을 제공하지만, 데이터 양이 많아 페이징이 표시되면 페이지를 변경할 때마다 오랜 시간을 기다려야 하는 것이 사람들에게 가장 짜증나는 일입니다. . 그렇다면 페이지를 변경하는 데 왜 그렇게 오랜 시간이 걸리나요? 실제로 페이지가 변경될 때마다 백그라운드에서 데이터베이스에서 데이터를 가져오기 때문에 데이터의 양이 많아지고 속도도 자연스럽게 느려집니다. 우리는 그것이 많은 반복적인 작업을 수행했다는 것을 알 수 있습니다. 데이터는 조작되지 않았으므로 한 번만 검색하면 충분하며, 몇 번을 검색해도 결과는 동일합니다. 우리의 목표는 반복 검색 횟수를 최소한 1~2회 정도로 줄이는 것입니다. 방법은 검색된 데이터를 저장하는 것입니다. 예를 들어 로그인에 성공한 후 백그라운드에서 원하는 데이터를 검색하고 검색된 데이터를 배열로 세션에 저장한 다음 표시할 페이지로 이동할 수 있습니다. 데이터), 물론 세션 변수를 이용해서 저장할 수는 있지만(쿠키로는 저장할 수 없는 것 같습니다), 데이터 양이 너무 많아서 세션 변수가 오버플로된다면 그 한계가 어느 정도인지는 알겠습니다. 내가 할 수 있는 일은 아무것도 없다. 더 이상 고민하지 않고 데이터를 저장하는 방법을 설명하겠습니다.
먼저 데이터베이스에서 데이터를 읽어야 합니다.
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
하하 , 데이터를 읽었습니다. 다음은 데이터를 페이지 단위로 표시할 차례입니다. .
페이지---현재 페이지
frompage----페이지의 기록 시작 위치
toppage------페이지의 기록 종료 위치
pagesize---- 각 페이지에 표시되는 레코드 수
n---총 레코드 수
yushu------마지막 페이지의 레코드 수
resultArray=session("arr")
n= UBound(resultArray,2)+1
pagesize=5
'response.write "
'response.write ""
yushu =n mod 페이지 크기
if yushu= 0 then
totalpage=fix(n/pagesize)
else
totalpage=fix(n/pagesize)+1
End If
요청 시 ("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
topage=frompage+pagesize-1
if yushu=0이면
frompage=(page-1)*pagesize
topage=frompage+pagesize-1
else
frompage=(page-1)* 페이지 크기
topage=frompage+pagesize- 1
페이지=totalpage인 경우
frompage=(page-1)*pagesize
topage=frompage+yushu-1
끝나는 경우
end
뭔가 잘못된 경우 조언을 주세요
데모 주소: http://fishbone31.w3.zccn.net
내 웹사이트에서는 읽는 대신 이전 페이지와 다음 페이지가 새로 고쳐지기 때문에 전체 페이지를 새로 고칩니다. 데이터 페이지 [body.asp]이므로 속도가 이상적이지 않습니다.
계정과 비밀번호 모두 테스트 중입니다.