<%
Kelas cache rem xml
'------------------------------------------------ - ------------------------------
'Harap simpan informasi hak cipta saat mencetak ulang
'Penulis: ╰⑥月の雨╮
'Versi: ver1.0
'Kelas ini sebagian menggunakan kelas cache data walkmanxml, yang lebih nyaman digunakan. Selamat berkomunikasi dan membuat kemajuan.
'------------------------------------------------ - ------------------------------
Kelas XmlCacheCls
Private m_DataConn 'Sumber data, harus terbuka
Private m_CacheTime 'Waktu cache, dalam hitungan detik, defaultnya adalah 10 menit
Jalur xml m_XmlFile pribadi, gunakan alamat absolut, tidak diperlukan ekstensi
Pernyataan SQL m_Sql 'pribadi
Private m_SQLArr '(read-only) mengembalikan array data
Private m_ReadOn '(Read-only) Mengembalikan
properti mode membaca 1-database 2-xml untuk deteksi ============ ==============
'Sumber data
Kumpulan Properti Umum Sambungan(v)
Tetapkan m_DataConn = v
Properti Akhir
Properti Umum Dapatkan Conn
Sambungan = m_DataConn
Akhiri Properti
'Waktu cache
Properti Publik Biarkan CacheTime(v)
m_CacheTime = v
Properti Akhir
Properti Publik Dapatkan CacheTime
Waktu Cache = m_Waktu Cache
Akhir Properti
'jalur xml, gunakan alamat absolut
Properti Publik Biarkan XmlFile(v)
m_XmlFile = v
Properti Akhir
GetXmlFile Properti Publik
XmlFile = m_XmlFile
Properti Akhir
'Pernyataan Sql
Properti Publik Biarkan Sql(v)
m_Sql = v
Properti Akhir
Properti Umum Dapatkan Sql
Sql = m_Sql
Properti Akhir
'Kembalikan susunan rekaman
Properti Publik Dapatkan SQLArr
SQLArr = m_SQLArr
Properti Akhir
'Kembali ke mode membaca
Properti Publik Dapatkan Bacaan
BacaOn = m_ReadOn
Properti Akhir
'Penghancuran kelas============
Sub Pribadi Class_Initialize() 'Inisialisasi kelas
m_CacheTime=60*10 'Waktu cache default adalah 10 menit
End Sub
Private Sub Class_Terminate() 'Release class
End Sub
' Metode publik kelas ================================= ========
Rem membaca data
Data Baca Fungsi Publik
Jika FSOExistsFile(m_XmlFile) Lalu 'Xml cache ada, baca langsung dari xml
BacaDataDariXml
m_ReadOn=2
Kalau tidak
BacaDataDariDB
m_ReadOn=1
Akhiri Jika
Fungsi Akhir
Rem menulis data XML
Fungsi Publik WriteDataToXml
Jika FSOExistsFile(m_XmlFile) Lalu 'Langsung keluar jika xml belum kedaluwarsa
Jika Bukan isXmlCacheExpired(m_XmlFile,m_CacheTime) Kemudian Keluar dari Fungsi
Akhiri Jika
Redup
Konten Dimxml
Redupkan k
xmlkonten = ""
xmlcontent = xmlcontent & "<?xml version=""1.0"" coding=""gb2312""?>" & vbnewline
xmlcontent = xmlcontent & " <root>" & vbnewline
k=0
Setel Rs = Server.CreateObject("Adodb.Recordset")
Rs.buka m_sql,m_DataConn,1
Meskipun Bukan rs.eof
xmlcontent = xmlcontent & " <item "
Untuk Setiap bidang Di rs.Fields
xmlcontent = xmlcontent & field.name & "=""" & XMLStringEnCode(field.value) & """ "
Berikutnya
rs.movenext
k=k+1
xmlcontent = xmlcontent & "></item>" & vbnewline
Pergi ke
rs.tutup
Setr=Tidak ada
xmlcontent = xmlcontent & " </root>" & vbnewline
Redupkan jalur folder
jalur folder = Pangkas(kiri(m_XmlFile,InstrRev(m_XmlFile,"")-1))
Panggil CreateDIR(folderpath&"") 'Buat folder
WriteStringToXMLFile m_XmlFile,xmlcontent
Fungsi Akhir
'Metode kelas pribadi==============
Rem dari data pembacaan file Xml
Fungsi Pribadi ReadDataFromXml
Redupkan SQLARR() 'Array
Redupkan objek XmlDoc 'XmlDoc
Redupkan objNode 'simpul anak
Redupkan ItemsLength 'Panjang node anak
Redupkan AttributesLength 'Panjang atribut simpul anak
Setel XmlDoc=Server.CreateObject("Microsoft.XMLDOM")
XmlDoc.Async=Salah
XmlDoc.Muat(m_XmlFile)
Setel objNode=XmlDoc.documentElement 'Dapatkan simpul akar
ItemsLength=objNode.ChildNodes.length 'Dapatkan panjang node anak
Untuk item_i=0 Ke ItemsLength-1
AttributesLength=objNode.childNodes(items_i).Attributes.length 'Dapatkan panjang atribut simpul anak
Untuk Attributes_i=0 Ke AttributesLength-1
ReDim Pertahankan SQLARR(AttributesLength-1,items_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
Berikutnya
Berikutnya
Setel XmlDoc = Tidak Ada
m_SQLArr = SQLARR
Fungsi Akhir
Rem membaca data dari database
Fungsi Pribadi ReadDataFromDB
Redup
RedupSQLARR()
Redupkan k
k=0
Setel Rs = Server.CreateObject("Adodb.Recordset")
Rs.buka m_sql,m_DataConn,1
Jika Tidak (rs.eof dan rs.bof) Lalu
Meskipun Bukan rs.eof
Redupkan panjang lapangan
fieldlegth = rs.Fields.count
ReDim Pertahankan SQLARR(panjang bidang,k)
Bidang redup
Untuk fieldi = 0 Ke fieldpanjang-1
SQLArr(fieldi,k) = rs.Fields(fieldi).nilai
Berikutnya
rs.movenext
k=k+1
Pergi ke
Akhiri Jika
rs.tutup
Setr=Tidak ada
m_SQLArr = SQLArr
Fungsi Akhir
'Metode privat tambahan kelas============ ==
Rem Tulis file xml
Sub Pribadi WriteStringToXMLFile(nama file,str)
Redupkan fs,ts
Setel fs= buat objek("scripting.filesystemobject")
Jika Bukan IsObject(fs) Kemudian Keluar dari Sub
Setel ts=fs.OpenTextFile(nama file,2,Benar)
ts.writeline(str)
ts.tutup
Tetapkan ts=Tidak ada
Tetapkan fs=Tidak ada
End Sub
Rem menentukan apakah cache xml telah kedaluwarsa
Fungsi Pribadi isXmlCacheExpired(file,detik)
Redupkan file terakhir kali
filelasttime = FSOGetFileLastModifiedTime(file)
Jika DateAdd("s",detik,filewaktu terakhir) < Sekarang Lalu
isXmlCacheExpired = Benar
Kalau tidak
isXmlCacheExpired = Salah
Akhiri Jika
Fungsi Akhir
Rem mendapatkan waktu modifikasi terakhir file
Fungsi Pribadi FSOGetFileLastModifiedTime(file)
Redupkan fso,f,s
Setel fso=CreateObject("Scripting.FileSystemObject")
Setel f=fso.GetFile(file)
FSOGetFileLastModifiedTime = f.DateLastModified
Tetapkan f = Tidak ada
Tetapkan fso = Tidak ada
Fungsi Akhir
ada?
Fungsi Publik FSOExistsFile(file)
Redupkan
Setel fso = Server.CreateObject("Scripting.FileSystemObject")
Jika fso.FileExists(file) Lalu
FSOExistsFile = benar
Kalau tidak
FSOExistsFile = salah
Akhiri Jika
Tetapkan fso = tidak ada
Karakter escape Rem xml
Fungsi Akhir
Fungsi Pribadi XMLStringEnCode(str)
Jika str&"" = "" Kemudian XMLStringEnCode="":Keluar dari Fungsi
str = Ganti(str,"<","<")
str = Ganti(str,">",">")
str = Ganti(str,"'","'")
str = Ganti(str,"""",""")
str = Ganti(str,"&","&")
XMLStringEnCode = str
Fungsi Akhir
Rem Buat Folder
Fungsi pribadi CreateDIR (byval LocalPath)
Pada Kesalahan Lanjutkan Berikutnya
Redupkan saya,FileObject,patharr,path_level,pathtmp,cpath
LocalPath = Ganti(LocalPath,"","/")
Setel FileObject = server.createobject("Scripting.FileSystemObject")
patharr = Pisahkan(Jalur Lokal,"/")
path_level = UBound(patharr)
Untuk i = 0 Ke path_level
Jika i=0 Maka
jalurtmp=jalur(0) & "/"
Kalau tidak
jalurtmp = jalurtmp & jalurr(i) & "/"
Akhiri Jika
cpath = kiri(jalurtmp,len(jalurtmp)-1)
Jika Bukan FileObject.FolderExists(cpath) Lalu
'Respon.tulis cpath
FileObject.CreateFolder cpath
Akhiri Jika
Berikutnya
Setel FileObject = Tidak Ada
Jika err.number<>0 Lalu
BuatDIR = Salah
err.Hapus
Kalau tidak
BuatDIR = Benar
Akhiri Jika
Fungsi Akhir
Kelas Akhir
'Setel tembolok
Fungsi SetCache(xmlFilePath,CacheTime,Conn,Sql)
atur cache=XmlCacheCls baru
Setel cache.Conn=Samb
cache.XmlFile=xmlFilePath
cache.Sql=Sql
cache.CacheTime=Waktu Cache
cache.WriteDataToXml
Setel cache = Tidak ada
Fungsi Akhir
'Baca tembolok
Fungsi ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=xmlFilePath
cache.Sql=Sql
cache.ReadData
BacaCache=cache.SQLArr
ReadOn=cache.ReadOn
Fungsi Akhir
%>
Penggunaan:
1 data cache ke xml
kode:
kode program
<!--#include file="Conn.asp"-->
<!--#termasuk file="Xml.asp"-->
<%
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=Server.Mappath("xmlcache/index/Top.xml")
cache.Sql="pilih 15 prod_id teratas,prod_name,prod_uptime dari tblProduction"
cache.WriteDataToXml
%>
2 Kode untuk membaca data cache
:
kode program
<!--#include file="Conn.asp"-->
<!--#termasuk file="Xml.asp"-->
<%
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=Server.Mappath("xmlcache/index/Top.xml")
cache.Sql="pilih 15 prod_id,prod_name,prod_uptime teratas dari tblProduction pesanan berdasarkan prod_id asc"
cache.ReadData
rsArray=cache.SQLArr
jika isArray(rsArray) maka
untuk i=0 hingga ubound(rsArray,2)
untuk j=0 hingga ubound(rsArray,1)
respon.Tulis(rsArray(j,i)&"<br><br>")
Berikutnya
Berikutnya
berakhir jika
%>
Waktu cache, unit default adalah 10 menit dalam hitungan detik; Anda juga dapat mengatur cache.CacheTime=60*30 30 menit sendiri