<%
REM XML 캐시 클래스
클래스 XMLCACHECLS
Private M_DATACONN '데이터 소스를 열어야합니다
개인 M_CACHETIME '캐시 타임, 기본값은 초 10 분입니다
Private M_XMLFILE 'XML PATH, Absolute Address 사용, 확장자가 필요하지 않습니다.
개인 M_SQL 'SQL 문
개인 m_sqlarr '(읽기 전용) 반환 데이터 배열
개인 M_REDON '(읽기 전용)을 반환합니다. 읽기 방법 1- 다타베이스 2-XML 감지
'클래스 속성 ============================================== ===
'데이터 소스
공공 재산 세트 Conn (V)
m_dataconn = v를 설정하십시오
종료 속성
공공 재산은 연결됩니다
conn = m_dataconn
종료 속성
'캐시 시간
공공 재산은 캐시 타임 (V)에게
m_cachetime = v
종료 속성
공공 재산은 캐시 타임을 얻습니다
캐시 타임 = M_CACHETIME
종료 속성
'XML 경로, 절대 주소
공공 재산 xmlfile (V)
m_xmlfile = v
종료 속성
공공 부동산은 xmlfile을 얻습니다
xmlfile = m_xmlfile
종료 속성
'SQL 문
공공 재산은 SQL (V)에게
m_sql = v
종료 속성
공공 재산은 SQL을 얻습니다
SQL = M_SQL
종료 속성
'레코드 배열로 돌아갑니다
공공 재산은 sqlarr를 얻습니다
sqlarr = m_sqlarr
종료 속성
'읽기 방법으로 돌아갑니다
공공 재산은 Readon을 얻습니다
readon = m_readon
종료 속성
'계급 파괴 ============================================= ==========
private sub class_initialize () '초기화 클래스
M_CACHETIME = 60*10 '기본 캐시 시간은 10 분입니다
종료 서브
private sub class_terminate () '릴리스 클래스
종료 서브
'클래스의 공개 방법 ============================================= ===============
REM 읽기 데이터
공개 기능 readData
fsoexistsfile (m_xmlfile)이라면 'XML 캐시가 있습니다. XML에서 직접 읽으십시오.
readDatafromxml
m_readon = 2
또 다른
readDatafromdb
m_readon = 1
끝 If
엔드 기능
REM XML 데이터를 작성합니다
공개 기능 writedatatoxml
fsoexistsfile (m_xmlfile) 인 경우 'XML이 만료되지 않은 경우 직접 종료하십시오.
ISXMLCACHEEXPIRED (M_XMLFILE, M_CACHETIME)가 아닌 경우 기능을 종료하십시오
끝 If
희미한 Rs
xmlcontent를 희미하게합니다
희미한 k
xmlcontent =
xmlcontent = xmlcontent & <? xml 버전 = 1.0 인코딩 = gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
k = 0
set rs = server.createobject (adodb.recordset)
Rs. OPEN M_SQL, M_DATACONN, 1
rs.eof는 아닙니다
xmlcontent = xmlcontent & <항목
Rs.Fields의 각 필드에 대해
xmlcontent = xmlcontent & field.name & = & xmlstringencode (field.value) &
다음
rs.movenext
k = k+1
xmlcontent = xmlcontent &> </item> & vbnewline
향하게 하다
Rs.Close
RS = 아무것도 설정하지 않습니다
xmlcontent = xmlcontent & </root> & vbnewline
Dim FolderPath
FolderPath = trim (왼쪽 (m_xmlfile, instrev (m_xmlfile,/) -1)))
Calludir (FolderPath &) '폴더 작성
writestringtoxmlfile m_xmlfile, xmlcontent
엔드 기능
'개인 클래스의 개인 방법 ============================================= ===========
REM XML 파일에서 데이터를 읽습니다
개인 기능 readdatafromxml
dim sqlarr () '배열
Dim XMLDOC 'XMLDOC 객체
Dim Objnode 'Child Node
DIM ItemsLength 'Child 노드의 길이
DIM AttributeSlength '하위 노드 속성의 길이
xmldoc = server.createobject (microsoft.xmldom) set
xmldoc.async = false
xmldoc.load (m_xmlfile)
objnode = xmldoc.documentElement 'get root node를 설정하십시오
itemslength = objnode.childnodes.length '하위 노드의 길이를 얻으십시오
items_i = 0 ~ itemslength-1의 경우
AttributeSlength = objnode.childnodes (items_i) .attributes.length '하위 노드 속성의 길이를 가져옵니다
attributes_i = 0에서 attributeSlength-1의 경우
redim preserve sqlarr (attributeSlength-1, items_i)
sqlarr (attributes_i, items_i) = objnode.childnodes (items_i) .attributes (attributes_i) .nodevalue
다음
다음
xmldoc = 아무것도 설정하지 않습니다
m_sqlarr = sqlarr
엔드 기능
REM 데이터베이스에서 데이터를 읽습니다
개인 기능 readDatafromdb
희미한 Rs
dim sqlarr ()
희미한 k
k = 0
set rs = server.createobject (adodb.recordset)
Rs. OPEN M_SQL, M_DATACONN, 1
그렇지 않다면 (rs.eof 및 rs.bof)
rs.eof는 아닙니다
희미한 fieldlegth
fieldlegth = rs.fields.count
Redim Preserve Sqlarr (Fieldlegth, K)
희미한 fieldi
fielddi = 0에서 fieldlegth-1까지
sqlarr (fieldi, k) = rs.fields (fieldi) .Value
다음
rs.movenext
k = k+1
향하게 하다
끝 If
Rs.Close
RS = 아무것도 설정하지 않습니다
m_sqlarr = sqlarr
엔드 기능
'보조 개인 클래스의 보조 개인 방법 =========================================== ==========
REM은 XML 파일을 작성합니다
개인 하위 writestringtoxmlfile (filename, str)
Dim Fs, ts
set fs = createobject (scripting.filesystemobject)
isobject (fs)가 아닌 경우 서브를 종료하십시오
set ts = fs.opentextfile (filename, 2, true)
ts.writeline (str)
ts.close
ts = 아무것도 설정하지 않습니다
fs = 아무것도 설정하지 않습니다
종료 서브
REM은 XML 캐시가 만료되는지 여부를 결정합니다
개인 기능 ISXMLCACHEEXPIRED (파일, 초)
희미한 FilelastTime
filelasttime = fsogetfilelastmodifiedtime (파일)
dateadd (s, seconds, filelasttime) <지금
ISXMLCACHEEXPIRED = true입니다
또 다른
ISXMLCACHEEXPIRED = FALSE
끝 If
엔드 기능
rem 파일의 마지막 수정 시간을 얻습니다
개인 기능 fsogetfilelastmodifiedtime (파일)
Dim fso, f, s
set fso = createobject (scripting.filesystemobject)
f = fso.getFile (파일) 설정
fsogetfilelastmodifiedtime = f.datelastmodified
f = 아무것도 설정하지 않습니다
FSO = 아무것도 설정하지 않습니다
엔드 기능
REM 파일이 존재합니까?
공개 기능 fsoexistsfile (파일)
희미한 fso
set fso = server.createobject (scripting.filesystemobject)
FSO.FileExists (파일) 인 경우
fsoexistsfile = true
또 다른
fsoexistsfile = false
끝 If
FSO = 아무것도 설정하지 않습니다
엔드 기능
REM XML 탈출 문자
개인 기능 xmlstringencode (str)
str & =이면 xmlstringencode = : 종료 함수
str = replace (str, <, <)
str = replace (str,>,>)
str = replace (str, ', & apos;)
str = replace (str ,,)
str = replace (str, &, &)
xmlstringencode = str
엔드 기능
REM 폴더를 만듭니다
Private Function Createdir (Byval LocalPath)
다음에 오류가 재개됩니다
Dim I, FileObject, Patharr, Path_Level, PathTMP, CPath
LocalPath = Replace (LocalPath,/,/)
set fileobject = server.createobject (scripting.filesystemobject)
patharr = split (LocalPath,/)
path_level = ubound (patharr)
i = 0에서 path_level의 경우
i = 0이면
pathtmp = patharr (0) & /
또 다른
pathtmp = pathtmp & patharr (i) & /
끝 If
cpath = 왼쪽 (pathtmp, len (pathtmp) -1)
FileObject.FolleExists (CPath)가 아닌 경우
'응답. cpath
fileObject.createFolder cpath
끝 If
다음
FileObject = Nothing을 설정합니다
err.number <> 0 인 경우
createir = false
err.clear
또 다른
createir = true
끝 If
엔드 기능
수업 종료
'캐시 설정
함수 setCache (XMLFILEPATH, CACHETIME, CONN, SQL)
CACHE = NEW XMLCACHECLS를 설정하십시오
cache.conn = conn을 설정하십시오
cache.xmlfile = xmlfilepath
cache.sql = sql
cache.cachetime = 캐시 타임
CACHE.WRITEDATATOXML
캐시 = 아무것도 설정하지 않습니다
엔드 기능
'캐시 읽기
함수 readCache (XMLFILEPATH, CONN, SQL, BYREF Readon)
CACHE = NEW XMLCACHECLS를 설정하십시오
cache.conn = conn을 설정하십시오
cache.xmlfile = xmlfilepath
cache.sql = sql
CACHE.READDATA
readCache = cache.sqlarr
readon = cache.readon
엔드 기능
%>
사용 방법 :
1 XML에 대한 캐시 데이터
암호:
프로그램 코드
<!-#포함 파일 = conn.asp->
<!-#포함 파일 = xml.asp->
<%
CACHE = NEW XMLCACHECLS를 설정하십시오
cache.conn = conn을 설정하십시오
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
cache.sql = tblproduction에서 상단 15 prod_id, prod_name, prod_uptime을 선택하십시오
CACHE.WRITEDATATOXML
%>
2 캐시 된 데이터를 읽습니다
암호:
프로그램 코드
<!-#포함 파일 = conn.asp->
<!-#포함 파일 = xml.asp->
<%
CACHE = NEW XMLCACHECLS를 설정하십시오
cache.conn = conn을 설정하십시오
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
cache.sql = prod_id asc의 tblproduction Order에서 상단 15 prod_id, prod_name, prod_uptime을 선택하십시오.
CACHE.READDATA
rsarray = cache.sqlarr
iSarray (rsarray)라면
i = 0에서 Ubund (Rsarray, 2)
J = 0에서 Ubund (Rsarray, 1)
response.write (rsarray (j, i) & <br> <br>)
다음
다음
끝 If
%>
캐시 시간은 기본적으로 몇 초 만에 Cache를 설정할 수도 있습니다