ASP가 출시된 지 7년이 지났고 ASP 기술의 사용은 상당히 성숙해졌습니다. Microsoft는 ASP.NET을 출시한 이후 ASP 버전 업데이트를 점차 중단했습니다. 그러나 많은 사람들이 여전히 ASP를 사용하여 웹 사이트를 개발하는 데 익숙하므로 다시 한 번 간단한 예를 사용하여 ASP에서 캐시를 사용하는 방법을 설명하겠습니다.
간단히 말해서, Cache를 사용하는 기본 원리는 자주 필요하고 값비싼 데이터를 일정 기간 동안 메모리에 저장하여 이러한 데이터에 직접적이고 전역적으로 접근할 수 있도록 하는 것입니다. 예를 들어, 데이터베이스의 여러 테이블에서 쿼리해야 하는 일부 데이터가 있고 거의 모든 페이지에서 이 데이터를 호출해야 합니다. 이 경우 가장 좋은 구현은 데이터의 이 부분을 캐시하는 것입니다. ASP에서 간단한 구현은 이러한 데이터(예: HTML 스트림)의 최종 표현 형식을 문자열로 캡슐화한 다음 이를 ASP 내장 개체에 저장하는 것입니다. 응용 프로그램(이 기사에서는 주로 동적 캐시에 대해 설명하고 간단한 ASP 응용 프로그램은 생략합니다.) 이것의 장점은 이 HTML을 웹사이트 전체에 걸쳐 전역적으로 호출할 수 있고 애플리케이션이 메모리에 저장되므로 데이터베이스에 쿼리할 필요가 없으므로 응답 시간이 빨라지고 서버 부하가 절약된다는 것입니다. 물론 이는 메모리 소모를 대가로 치르며 공간을 시간으로 교환하는 전형적인 예이다.
이 방법을 사용하면 많은 이점이 있지만 자주 변경되는 데이터 원본(데이터베이스)이 발생할 경우 ASP 응용 프로그램 개체에는 데이터 원본의 변경에 따라 자동으로 변경될 수 없다는 단점이 있으므로 이 방법을 더 이상 적용할 수 없습니다. . 새로 고침 간격을 변경하거나 제어합니다. 따라서 개발자는 동적 캐시를 구현하도록 프로그래밍해야 합니다. 물론, 프로그램을 설계하는 동안 데이터 소스(데이터베이스)가 변경될 때마다 Application이 업데이트될 수 있습니다. 따라서 데이터 소스(데이터베이스)는 항상 일관됩니다. 프로그래밍에는 고려해야 할 문제가 더 많아지고 세부 사항을 놓치기 쉽습니다. 그래서 특별한 경우를 제외하고는 이 방법을 추천하지 않습니다.
ASP에서 가장 좋은 방법은 프로그래밍을 사용하여 정기적으로 캐시를 새로 고치는 것입니다. 이는 응용 프로그램에 저장된 데이터의 만료 시간을 설정하는 것을 의미합니다. 물론 ASP의 Application 개체에는 이러한 ExpireTime 특성이 없습니다. 이는 프로그래밍 방식으로 구현되어야 합니다.
암호
ASP: default.asp
< %@Language=VBScript% >
<%옵션 명시적%>
<%Response.Buffer=참%>
<!--#include 파일 = "conn.asp"-->
<!--#include 파일 = "GetCache.asp"-->
<HTML>
<헤드>
<TITLE>ASP 캐시 시연</TITLE>
<META HTTP-EQUIV="콘텐츠 유형" CONTENT="text/html; charset=gb2312">
</HEAD>
<본문>
<h4>10초마다 캐시 새로 고침:</h4>
<%
응답. 플러시
HTML스트림 가져오기
응답.쓰기
HTML스트림
%>
</body>
</html>
ASP:getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 '30초마다 캐시 새로 고침
희미한 HTMLStream
DimIs만료
IsExpires = 캐시 만료
함수캐시 만료
희미한 strLastUpdate
희미한 결과 strLastUpdate = Application("LastUpdate")
If (strLastUpdate = "") 또는 (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) Then
결과 = 사실
마지막 업데이트 시간 설정
또 다른
결과 = 거짓
종료 조건
캐시 만료 = 결과
함수 종료
Sub SetLastUpdateTime
응용프로그램.잠금
애플리케이션("마지막 업데이트") = CStr(현재())
응용 프로그램.잠금 해제
End Sub
Sub GetHTMLStream
IsExpires가 다음인 경우
업데이트HTML스트림
종료 조건
HTMLStream=애플리케이션("CACHE_HTMLStream")
Sub UpdateHTMLStream
종료
희미한 d
d = FetchHTMLStream
응용프로그램.잠금
애플리케이션("CACHE_HTMLStream") = d
응용 프로그램.잠금 해제
하위
함수 FetchHTMLStream
종료
희미한 RS, strSQL, strHTML
rs = CreateObject("ADODB.Recordset") 설정
strSQL = "카테고리에서 카테고리ID, 카테고리이름을 선택하세요."
rs.Open strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
동안(rs.EOF 아님)
strHTML = strHTML & "<옵션>"
strHTML = strHTML & rs.Fields("카테고리이름")
strHTML = strHTML & "</option>" rs.MoveNext
향하게 하다
strHTML = strHTML & "</select>"
RS.닫기
설정자=아무것도 없음
FetchHTMLStream = strHTML
기능 종료
%>
ASP: conn.asp
<!--METADATA NAME="Microsoft ActiveX 데이터 개체 2.5 라이브러리" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
희미한 strConn
strConn = "공급자=SQLOLEDB.1;통합 보안=SSPI;보안 정보 유지=False;초기 카탈로그=Northwind"
%>