<%
Kelas Cache REM XML
Kelas XMLCACHECLS
Sumber data pribadi m_dataconn, harus dibuka
Capeetime m_cachetime pribadi, default hingga 10 menit dalam detik
Path Private M_XMLFile 'XML, gunakan alamat absolut, tidak diperlukan ekstensi
Pernyataan SQL Private M_SQL
Private m_sqlarr '(hanya baca) mengembalikan array data
Private M_Readon '(Read-only) Mengembalikan Metode Membaca 1-Database 2-XML untuk Deteksi
'Atribut kelas ================================================== ===
'Sumber data
Properti Public Set Conn (V)
Atur m_dataconn = v
Akhir properti
Properti Publik Dapatkan Conn
Conn = m_dataconn
Akhir properti
'Waktu cache
Properti Publik Biarkan CapeTime (V)
m_cachetime = v
Akhir properti
Properti Publik Dapatkan CapeTime
Capeetime = m_cachetime
Akhir properti
'XML Path, dengan alamat absolut
Properti Publik Biarkan Xmlfile (V)
m_xmlfile = v
Akhir properti
Properti publik dapatkan xmlfile
Xmlfile = m_xmlfile
Akhir properti
'Pernyataan SQL
Properti Publik Let SQL (V)
m_sql = v
Akhir properti
Properti Publik Dapatkan SQL
Sql = m_sql
Akhir properti
'Kembali ke array rekaman
Properti Publik Dapatkan Sqlarr
Sqlarr = m_sqlarr
Akhir properti
'Return to Read Metode
Properti Publik Dapatkan Readon
Readon = m_readon
Akhir properti
'Destruction kelas ================================================= =========
Private sub class_initialize () 'inisialisasi kelas
m_cachetime = 60*10 'waktu cache default adalah 10 menit
Akhir sub
Kelas rilis sub class_terminate () pribadi
Akhir sub
'Metode publik kelas =============================================== ===============
REM Membaca data
Fungsi Publik Readata
Jika fSoexistSfile (m_xmlfile) maka 'ada cache XML, baca langsung dari XML
Readdatafromxml
m_readon = 2
Kalau tidak
Readdatafromdb
m_readon = 1
Akhiri jika
Fungsi akhir
REM Menulis data XML
Fungsi Publik WritedAtAtoxML
Jika fSoexistSfile (m_xmlfile) maka 'jika xml belum kedaluwarsa, keluar secara langsung
Jika tidak isxmlcacheexpired (m_xmlfile, m_cachetime) maka fungsi keluar
Akhiri jika
Redup
Redup xmlcontent
Redup k
xmlcontent =
xmlcontent = xmlcontent & <? xml versi = 1.0 encoding = gb2312?> & vbnewline
xmlcontent = xmlcontent & <soot> & vbnewline
k = 0
Set RS = Server.CreateObject (ADODB.Recordset)
Rs.open m_sql, m_dataconn, 1
Sementara tidak 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 &> </t Item> & vbnewline
Pergi ke
rs.close
Setel RS = Tidak Ada
xmlcontent = xmlcontent & </soot> & vbnewline
Folderpath redup
folderPath = trim (kiri (m_xmlfile, instrrev (m_xmlfile,/)-1))
Call CreateDir (FolderPath &) 'Buat folder
WriteStringToxMlFile m_xmlfile, xmlcontent
Fungsi akhir
'Metode pribadi kelas =============================================== ===========
Rem Membaca Data dari file XML
Fungsi pribadi readdatafromxml
Redup sqlarr () 'array
Objek xmldoc redup xmldoc
Node anak redup objnode '
Redup itemslength 'panjang node anak
Atribut atribut 'atribut simpul anak -anak redup
Set xmldoc = server.CreateObject (microsoft.xmldom)
Xmldoc.async = false
Xmldoc.load (m_xmlfile)
Setel objnode = xmldoc.documentelement 'dapatkan node root
Itemslength = objnode.childnodes.length 'dapatkan panjang node anak
Untuk item_i = 0 ke itemslength-1
Atributslength = objnode.childnodes (items_i) .attributes.length 'Dapatkan panjang atribut node anak
Untuk atribut_i = 0 ke atributslength-1
Redim Cagar Alam Sqlarr (AtributSlength-1, Items_i)
Sqlarr (atribute_i, items_i) = objnode.childnodes (items_i) .attributes (atribute_i) .nodevalue
Berikutnya
Berikutnya
Atur xmldoc = tidak ada
m_sqlarr = sqlarr
Fungsi akhir
REM Membaca data dari database
Fungsi Pribadi ReaddataFromdb
Redup
Redup sqlarr ()
Redup k
k = 0
Set RS = Server.CreateObject (ADODB.Recordset)
Rs.open m_sql, m_dataconn, 1
Jika tidak (rs.eof dan rs.bof)
Sementara tidak rs.eof
Redup fieldlegth
fieldlegth = rs.fields.count
Redim Preserve Sqlarr (Fieldlegth, K)
Redup fieldi
Untuk fielddi = 0 ke fieldlegth-1
Sqlarr (fieldi, k) = rs.fields (fieldi) .value
Berikutnya
rs.movenext
K = K+1
Pergi ke
Akhiri jika
rs.close
Setel RS = Tidak Ada
m_sqlarr = sqlarr
Fungsi akhir
'Metode privat tambahan kelas =============================================== =========
Rem menulis file xml
Private Sub WriteStringToxMLFile (nama file, str)
Redup, ts
Set FS = CreateObject (Scripting.FilesystemObject)
Jika bukan isObject (fs) maka keluar sub sub
Set Ts = fs.opentextFile (nama file, 2, true)
Ts.WriteLine (STR)
ts.close
Atur ts = tidak ada
Atur fs = tidak ada
Akhir sub
REM menentukan apakah cache XML kedaluwarsa
Fungsi pribadi isxmlcacheexpired (file, detik)
Redup filelasttime
FileLastTime = fsogetFileLastModifiedTime (file)
Jika dateadd (s, detik, filelasTtime) <sekarang
isxmlCacheExpired = true
Kalau tidak
isxmlCacheExpired = false
Akhiri jika
Fungsi akhir
Rem Dapatkan waktu modifikasi terakhir dari file tersebut
Fungsi pribadi fsogetfileLastModifiedTime (file)
Redup fso, f, s
Atur fso = createObject (scripting.filesystemObject)
Atur f = fso.getFile (file)
FsogetfileLastModifiedTime = f.DateLastModified
Set f = tidak ada
Atur fso = tidak ada
Fungsi akhir
Apakah file REM ada?
Fungsi publik fSoexistsfile (file)
Redup fso
Atur fso = server.createObject (scripting.filesystemObject)
Jika fso.fileexists (file) lalu
FSoexistSfile = true
Kalau tidak
FSoexistSfile = false
Akhiri jika
Atur fso = tidak ada
Fungsi akhir
Rem XML Escape Character
Fungsi Pribadi XMLStringEncode (STR)
Jika str & = maka xmlStringencode =: Fungsi Keluar
str = ganti (str, <, <)
str = ganti (str,>,>)
str = ganti (str, ', & apos;)
str = ganti (str ,,)
str = ganti (str, &, &)
XmlStringencode = str
Fungsi akhir
Rem buat folder
Fungsi Pribadi CreateDir (Byval Localpath)
Pada kesalahan resume berikutnya
Redup i, fileObject, patharr, path_level, pathtmp, cpath
Localpath = ganti (localpath,/,/)
Set FileObject = Server.CreateObject (Scripting.FilesyStemObject)
Patharr = split (localpath,/)
path_level = ubound (patharr)
Untuk i = 0 ke path_level
Jika i = 0 lalu
pathtmp = patharr (0) & /
Kalau tidak
pathtmp = pathtmp & patharr (i) & /
Akhiri jika
cpath = kiri (pathtmp, len (pathtmp) -1)
Jika bukan FileObject.FolderExists (CPath) maka
'Response.write cpath
FileObject.CreateFolder CPath
Akhiri jika
Berikutnya
Atur fileObject = tidak ada
Jika err.number <> 0 lalu
CreateRir = false
err.clear
Kalau tidak
CreateRir = true
Akhiri jika
Fungsi akhir
Kelas akhir
'Atur cache
Fungsi Setcache (XMLFilePath, CapeTime, Conn, SQL)
Setel cache = xmlcachecls baru
Setel cache.conn = Conn
cache.xmlfile = xmlfilePath
cache.sql = sql
Cache.cachetime = Cachetime
Cache.WritEtAtoxML
Atur cache = tidak ada
Fungsi akhir
'Baca cache
Fungsi ReadCache (XMLFilePath, Conn, SQL, Byref Readon)
Setel cache = xmlcachecls baru
Setel cache.conn = Conn
cache.xmlfile = xmlfilePath
cache.sql = sql
Cache.readdata
ReadCache = Cache.sqlarr
Readon = cache.readon
Fungsi akhir
%>
Bagaimana menggunakan:
1 Data cache ke XML
Kode:
Kode Program
<!-#Sertakan file = conn.asp->
<!-#Sertakan file = xml.asp->
<%
Setel cache = xmlcachecls baru
Setel cache.conn = Conn
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
Cache.sql = Pilih Top 15 Prod_id, Prod_name, Prod_UPTIME dari TBLProduction
Cache.WritEtAtoxML
%>
2 Baca data yang di -cache
Kode:
Kode Program
<!-#Sertakan file = conn.asp->
<!-#Sertakan file = xml.asp->
<%
Setel cache = xmlcachecls baru
Setel cache.conn = Conn
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
Cache.sql = Pilih Top 15 Prod_id, Prod_name, Prod_UPTIME DARI PRODUKSI PRODUKS DENGAN PROD_ID ASC
Cache.readdata
rSarray = Cache.sqlarr
jika isArray (rsarray) maka
untuk i = 0 ke ubund (rsarray, 2)
untuk j = 0 ke ubund (rsarray, 1)
response.write (rsarray (j, i) & <br> <br>)
Berikutnya
Berikutnya
akhiri jika
%>
Waktu cache adalah 10 menit secara default dalam hitungan detik;