이전에 쓴 글: 이 글은 여전히 ASP와 관련되어 있습니다. ASP를 플레이하는 모든 사람들이 그렇게 느낄 것이라고 생각합니다. 음악 네트워크와 마찬가지로 데이터가 50,000개 이상일 때 최신 10개를 호출하여 표시해야 합니다. 나쁜 점은 n명의 사용자가 액세스를 위해 페이지를 열 때 각 사용자가 매번 데이터베이스를 한 번씩 읽어야 한다는 점입니다. 이는 확실히 데이터를 메모리에 저장한 다음 읽을 수 있다면 효율성이 떨어집니다. , 소위 캐시는 실제로 데이터를 저장하기 위해 메모리 공간을 여는 것입니다. 캐시를 사용하면 하드 디스크에 저장한 데이터에 자주 액세스할 필요가 없습니다. 모든 사용자가 이 데이터를 볼 수 있습니다. 애플리케이션 개체는 모든 방문자에게 공통 개체이기 때문에 이를 사용하는 것이 좋습니다. 여기서는 소유자 방문자가 사용할 수 있습니다. 내장 객체 APPLICATION. 애플리케이션에는 2개의 메소드(lock 및 Unlock), 2개의 컬렉션(content 및 staticobjects), 2개의 이벤트(application_onstart 및 application_end)가 있으며, 애플리케이션 변수는 일단 설정되면 사라지지 않습니다. 웹사이트가 닫히고 프로그램이 제거될 때까지 기다립니다. 따라서 사용 시 특히 주의해야 합니다. 그렇지 않으면 여기서 더 말할 필요가 없습니다. 관련 정보를 확인해 보세요. 우리는 데이터를 사용자 정의 애플리케이션에 쓰고 있습니다. 일반적인 아이디어는 지정된 시간에 읽고 새로 고치는 것입니다.
먼저 간단한 데이터베이스를 작성하고 이를 읽는 함수를 작성합니다. , 그리고 이를 임시 변수 temp에 씁니다.
다음은 참조 조각입니다.
함수 DisplayRecords()
'이 함수는 원래 기록된 값 Dim sql, conn, rs를 변수 temp에 할당했습니다.
'조건부 SQL 문 sql = "SELECT id, [szd_f], [szd_t] FROM admin"
'데이터베이스 연결 열기 Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver(*.mdb)}; DBQ="&Server.MapPath("db.mdb")
rs = Server.CreateObject("ADODB.Recordset")를 설정합니다.
rs.Open SQL, conn, 1, 3
'sq 문 l과 일치하는 데이터가 표시되지 않은 경우 If Not rs.EOF Then
' 임시 변수에 Dim temp 할당
temp = "<테이블 너비=""90%"" align=""center"""
온도 = 온도 & " border=""1"" bordercolor=""실버"""
온도 = 온도 & "cellspacing=""2"" cellpadding=""0"">"
온도 = 온도 & "<tr bgcolor=""#CCDDEE""><td width=""5%"""
temp = temp & ">ID</td><td>작업</td>"
temp = 임시 & "<td>숫자</td></tr>"
rs.EOF가 아닌 동안
온도 = 온도 & "<tr><td bgcolor=""#CCDDEE"">"
temp = temp & rs("ID") & "</td><td>" & rs("szd_f")
temp = 임시 & "</td><td>" & rs("szd_t")
온도 = 온도 & "</td></tr>"
rs.이동다음
향하게 하다
온도 = 온도 & "</table>"
'임시 할당이 완료된 후 이를 DisplayRecords = temp 함수로 반환합니다.
또 다른
DisplayRecords = "데이터를 사용할 수 없습니다."
종료 조건
'메모리 해제 rs.Close
연결.닫기
설정자=아무것도 없음
conn = 없음 설정
기능 종료
좋습니다. 위 함수는 변환되었으며 호출되면 DisplayRecords가 됩니다.
응용 프로그램이 작동하는 위치는 다음과 같습니다.
'이 함수는 캐시 함수 DisplayCachedRecords(Secs)에 쓰기 위한 것입니다.
희미한 retVal, datVal, temp1
'초는 매번 데이터를 새로 고치는 시간, retVal은 데이터, datVal은 남은 시간 retVal = Application("cache_demo") '애플리케이션의 값을 가져옵니다 datVal = Application("cache_demo_date") '애플리케이션의 값을 가져옵니다. ' datVal 값을 판단합니다. 즉, 시간이 지났는지 여부를 계산합니다. datVal = "" 그러면
'비어 있는 경우 datVal 값은 현재 시간(초)에 secs로 정의된 시간을 더한 값입니다 datVal = DateAdd("s",Secs,Now)
종료 조건
'temp1은 현재 시간과 datVal의 두 번째 차이입니다. temp1 = DateDiff("s", Now, datVal)
'retVal이 이미 위 함수의 반환 값이고 시간이 0보다 큰 경우
temp1 > 0이고 retVal <> ""이면
'이 함수는 레코드 수를 반환합니다. DisplayCachedRecords = retVal
Response.Write "<b><font color=""green"">캐시를 사용하여 데이터 읽기"
응답.쓰기 " ... (" & temp1 & "초 남음)</font></b>"
응답."<br><br>" 쓰기
또 다른
'retVal이 비어 있으면 DisplayRecords 값을 변수 temp2에 할당합니다.
희미한 온도2
temp2 = 디스플레이레코드()
'응용 프로그램에 저장.------>응용 프로그램에 집중합니다.잠금
애플리케이션("cache_demo") = temp2
Application("cache_demo_date") = DateAdd("s",Secs,Now)
응용 프로그램.잠금 해제
DisplayCachedRecords = temp2
' 여기에는 기록된 캐시의 과거 시간이 아무렇지도 않게 적혀 있으며, 총 초 수에 대한 차이는 다음과 같습니다.
Response.Write "<b><font color=""red"">캐시 표시 새로 고침..."
응답.쓰기 "</font></b><br><br>"
종료 조건
기능 종료
%>
설명이 완료되었습니다.
주석 처리되지 않은 전체 코드 호출 방법은 다음과 같습니다
. <%=DisplayCachedRecords(20)%>
마지막에 작성: 서버 메모리가 충분하지 않다고 생각되면 많은 양의 메모리를 사용하지 마십시오. 은닉처.