คลาสนี้ใช้คลาสแคชข้อมูล walkmanxml ซึ่งสะดวกกว่าในการใช้งาน ยินดีต้อนรับสู่การสื่อสารและ ดำเนินการคัดลอกโค้ดดังนี้:
-
คลาสแคช Rem xml
'------------------------------------------------ - ------------------
'โปรดเก็บข้อมูลลิขสิทธิ์ไว้เมื่อพิมพ์ซ้ำ
'ผู้เขียน: ╰⑥月の雨╮
'เวอร์ชัน: เวอร์ชัน 1.0
'หมวดหมู่นี้ดึงบทเรียนจากคลาสแคชข้อมูล walkmanxml ซึ่งสะดวกกว่าในการใช้งาน ยินดีต้อนรับสู่การสื่อสารและสร้างความก้าวหน้า
'------------------------------------------------ - ------------------
คลาส XmlCacheCls
m_DataConn ส่วนตัว 'แหล่งข้อมูลต้องเปิดอยู่'
m_CacheTime ส่วนตัว 'เวลาแคช เป็นวินาที ค่าเริ่มต้นคือ 10 นาที
เส้นทาง xml ของ m_XmlFile ส่วนตัว ใช้ที่อยู่ที่แน่นอน ไม่ต้องใช้ส่วนขยาย
คำสั่ง SQL 'm_Sql ส่วนตัว
ส่วนตัว m_SQLArr '(อ่านอย่างเดียว) ส่งคืนอาร์เรย์ข้อมูล
Private m_ReadOn '(อ่านอย่างเดียว) ส่งคืนโหมดการอ่าน 1-database 2-xml เพื่อการตรวจจับ
'แอตทริบิวต์คลาส==========================================
'แหล่งข้อมูล
ชุดทรัพย์สินสาธารณะ Conn(v)
ตั้งค่า m_DataConn = v
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะ Get Conn
Conn = m_DataConn
สิ้นสุดคุณสมบัติ
'เวลาแคช
ทรัพย์สินสาธารณะให้ CacheTime (v)
m_CacheTime = v
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ CacheTime
แคชไทม์ = m_CacheTime
สิ้นสุดคุณสมบัติ
'เส้นทาง xml ใช้ที่อยู่ที่แน่นอน'
ทรัพย์สินสาธารณะให้ XmlFile (v)
m_XmlFile = v
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะ GetXmlFile
XmlFile = m_XmlFile
สิ้นสุดคุณสมบัติ
'คำสั่ง SQL
ทรัพย์สินสาธารณะให้ Sql (v)
m_Sql = โวลต์
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ SQL
ตรรกกะ = m_Sql
สิ้นสุดคุณสมบัติ
'ส่งคืนอาร์เรย์บันทึก
ทรัพย์สินสาธารณะรับ SQLArr
SQLArr = m_SQLArr
สิ้นสุดคุณสมบัติ
'กลับสู่โหมดการอ่าน'
ทรัพย์สินสาธารณะรับ ReadOn
ReadOn = m_ReadOn
สิ้นสุดคุณสมบัติ
'การทำลายคลาส =========================================
Class_Initialize ส่วนตัว () 'เตรียมใช้งานคลาส
m_CacheTime=60*10 'เวลาแคชเริ่มต้นคือ 10 นาที
จบหมวดย่อย
Class_Terminate ส่วนตัวย่อย () 'คลาสที่วางจำหน่าย
จบหมวดย่อย
'วิธีการสาธารณะของชั้นเรียน =========================================
เรมอ่านข้อมูล
ฟังก์ชั่นสาธารณะ ReadData
ถ้า FSOExistsFile(m_XmlFile) ดังนั้น 'มีแคช Xml อยู่ ให้อ่านโดยตรงจาก xml
อ่าน DataFromXml
m_ReadOn=2
อื่น
อ่านข้อมูลจากDB
m_ReadOn=1
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
Rem เขียนข้อมูล XML
ฟังก์ชั่นสาธารณะ WriteDataToXml
ถ้า FSOExistsFile(m_XmlFile) ให้ 'ออกโดยตรงถ้า xml ยังไม่หมดอายุ'
หากไม่ใช่ isXmlCacheExpired(m_XmlFile,m_CacheTime) ให้ออกจากฟังก์ชัน
สิ้นสุดถ้า
หรี่แสง
Dimxmlเนื้อหา
ดิม เค
xmlcontent=
xmlcontent = xmlcontent & <?xml version=1.0 การเข้ารหัส=gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
เค=0
ตั้งค่า Rs = Server.CreateObject (Adodb.Recordset)
Rs.เปิด m_sql,m_DataConn,1
ในขณะที่ไม่ใช่ rs.eof
xmlcontent = xmlcontent & <รายการ
สำหรับแต่ละฟิลด์ใน rs.Fields
xmlcontent = xmlcontent & field.name & = & XMLStringEnCode (field.value) &
ต่อไป
rs.movenext
เค=เค+1
xmlcontent = xmlcontent & ></ รายการ> & vbnewline
เวนด์
RS.ปิด
Setrs=ไม่มีอะไร
xmlcontent = xmlcontent & </root> & vbnewline
เส้นทางโฟลเดอร์สลัว
folderpath = ตัดแต่ง (ซ้าย (m_XmlFile, InstrRev (m_XmlFile,/)-1))
โทร CreateDIR(folderpath&) 'สร้างโฟลเดอร์'
WriteStringToXMLFile m_XmlFile,xmlcontent
ฟังก์ชันสิ้นสุด
'วิธีการส่วนตัวของคลาส =========================================
Rem อ่านข้อมูลจากไฟล์ Xml
ฟังก์ชั่นส่วนตัว ReadDataFromXml
หรี่ SQLARR() 'Array
Dim XmlDoc 'วัตถุ XmlDoc
Dim objNode 'โหนดลูก'
Dim ItemsLength 'ความยาวของโหนดลูก'
Dim AttributesLength 'ความยาวของแอตทริบิวต์โหนดลูก
ตั้งค่า XmlDoc=Server.CreateObject(Microsoft.XMLDOM)
XmlDoc.Async=เท็จ
XmlDoc.Load(m_XmlFile)
ตั้งค่า objNode=XmlDoc.documentElement 'รับโหนดรูท
ItemsLength=objNode.ChildNodes.length 'รับความยาวของโหนดย่อย
สำหรับ items_i=0 ถึง ItemsLength-1
AttributesLength=objNode.childNodes(items_i).Attributes.length 'รับความยาวของแอตทริบิวต์โหนดย่อย
สำหรับ Attributes_i=0 ถึง AttributesLength-1
ReDim รักษา SQLARR (AttributesLength-1,items_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
ต่อไป
ต่อไป
ตั้ง XmlDoc = ไม่มีเลย
m_SQLArr = SQLARR
ฟังก์ชันสิ้นสุด
Rem อ่านข้อมูลจากฐานข้อมูล
ฟังก์ชั่นส่วนตัว ReadDataFromDB
หรี่แสง
DimSQLARR()
ดิม เค
เค=0
ตั้งค่า Rs = Server.CreateObject (Adodb.Recordset)
Rs.เปิด m_sql,m_DataConn,1
ถ้าไม่ใช่ (rs.eof และ rs.bof) จากนั้น
ในขณะที่ไม่ใช่ rs.eof
ขาสนามสลัว
fieldlegth = rs.Fields.count
ReDim รักษา SQLARR (fieldlegth, k)
ดิม ฟิลด์ดิ
สำหรับ fieldi = 0 ถึง fieldlegth-1
SQLArr(fieldi,k) = rs.Fields(fieldi).value
ต่อไป
rs.movenext
เค=เค+1
เวนด์
สิ้นสุดถ้า
RS.ปิด
Setrs=ไม่มีอะไร
m_SQLArr = SQLArr
ฟังก์ชันสิ้นสุด
'วิธีการส่วนตัวเสริมของคลาส
Rem เขียนไฟล์ xml
WriteStringToXMLFile ส่วนตัวย่อย (ชื่อไฟล์, str)
ติ่มซำ fs,ts
ตั้งค่า fs= createobject(scripting.filesystemobject)
ถ้าไม่ใช่ IsObject(fs) ให้ออกจาก Sub
ตั้งค่า ts=fs.OpenTextFile(ชื่อไฟล์,2,จริง)
ts.writeline(str)
ts.ปิด
ตั้งค่า ts=ไม่มีอะไร
ตั้งค่า fs=ไม่มีอะไร
จบหมวดย่อย
Rem กำหนดว่าแคช xml หมดอายุแล้วหรือไม่
ฟังก์ชั่นส่วนตัว isXmlCacheExpired (ไฟล์, วินาที)
ไฟล์ติ่มซำครั้งล่าสุด
filelasttime = FSOGetFileLastModifiedTime (ไฟล์)
ถ้า DateAdd(s,วินาที,filelasttime) < ตอนนี้แล้ว
isXmlCacheExpired = จริง
อื่น
isXmlCacheExpired = เท็จ
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
Rem ได้รับเวลาแก้ไขล่าสุดของไฟล์
ฟังก์ชั่นส่วนตัว FSOGetFileLastModifiedTime (ไฟล์)
หรี่ fso,f,s
ตั้งค่า fso=CreateObject(Scripting.FileSystemObject)
ตั้งค่า f=fso.GetFile(ไฟล์)
FSOGetFileLastModifiedTime = f.DateLastModified
เซต f = ไม่มีเลย
ตั้งค่า fso = ไม่มีเลย
ฟังก์ชันสิ้นสุด
มีไฟล์ Rem อยู่
ฟังก์ชั่นสาธารณะ FSOExistsFile (ไฟล์)
ติ่มซำ
ตั้งค่า fso = Server.CreateObject (Scripting.FileSystemObject)
ถ้า fso.FileExists(file) แล้ว
FSOExistsFile = จริง
อื่น
FSOExistsFile = เท็จ
สิ้นสุดถ้า
ตั้งค่า fso = ไม่มีเลย
ฟังก์ชันสิ้นสุด
อักขระหลีก Rem xml
ฟังก์ชั่นส่วนตัว XMLStringEnCode(str)
ถ้า str& = ดังนั้น XMLStringEnCode=:Exit Function
str = แทนที่ (str,<,<)
str = แทนที่ (str,>,>)
str = แทนที่ (str,',')
str = แทนที่ (str,,)
str = แทนที่ (str,&,&)
XMLStringEnCode = STR
ฟังก์ชันสิ้นสุด
Rem สร้างโฟลเดอร์
ฟังก์ชั่นส่วนตัว CreateDIR (byval LocalPath)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
หรี่ฉัน, FileObject, patharr, path_level, pathtmp, cpath
LocalPath = แทนที่ (LocalPath,/,/)
ตั้งค่า FileObject = server.createobject (Scripting.FileSystemObject)
patharr = แยก (LocalPath,/)
path_level = UBound(พาธาร์)
สำหรับ i = 0 ถึง path_level
ถ้า i=0 แล้ว
pathtmp=patharr(0) & /
อื่น
pathtmp = pathtmp & patharr(i) & /
สิ้นสุดถ้า
cpath = ซ้าย (pathtmp, len (pathtmp) -1)
ถ้าไม่ใช่ FileObject.FolderExists(cpath) จากนั้น
'Response.write cpath'
FileObject.CreateFolder cpath
สิ้นสุดถ้า
ต่อไป
ตั้งค่า FileObject = ไม่มีเลย
ถ้า err.number<>0 แล้ว
CreateDIR = เท็จ
ผิดพลาด เคลียร์
อื่น
CreateDIR = จริง
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
จบคลาส
'ตั้งค่าแคช
ฟังก์ชั่น SetCache (xmlFilePath, CacheTime, Conn, Sql)
ตั้งค่าแคช = XmlCacheCls ใหม่
ตั้งค่า cache.Conn=Conn
cache.XmlFile=xmlFilePath
cache.Sql=Sql
cache.CacheTime=แคชไทม์
แคช WriteDataToXml
ตั้งค่าแคช = ไม่มีอะไรเลย
ฟังก์ชันสิ้นสุด
'อ่านแคช
ฟังก์ชั่น ReadCache (xmlFilePath, Conn, Sql, ByRef ReadOn)
ตั้งค่าแคช = XmlCacheCls ใหม่
ตั้งค่า cache.Conn=conn
cache.XmlFile=xmlFilePath
cache.Sql=Sql
แคช ReadData
ReadCache=แคช.SQLArr
ReadOn=แคชReadOn
ฟังก์ชันสิ้นสุด
-
วิธีใช้:
1 ข้อมูลแคชเป็น xml
รหัส:
คัดลอกรหัสรหัสดังต่อไปนี้:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
-
ตั้งค่าแคช = XmlCacheCls ใหม่
ตั้งค่า cache.Conn=conn
cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
cache.Sql=เลือก 15 อันดับแรก prod_id,prod_name,prod_uptime จาก tblProduction
แคช WriteDataToXml
-
2 อ่านข้อมูลที่แคชไว้
รหัส:
คัดลอกรหัสรหัสดังต่อไปนี้:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
-
ตั้งค่าแคช = XmlCacheCls ใหม่
ตั้งค่า cache.Conn=conn
cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
cache.Sql=เลือก 15 อันดับแรก prod_id,prod_name,prod_uptime จากลำดับ tblProduction โดย prod_id asc
แคช ReadData
rsArray=แคช.SQLArr
ถ้า isArray(rsArray) แล้ว
สำหรับ i=0 ถึง ubound(rsArray,2)
สำหรับ j=0 ถึง ubound(rsArray,1)
การตอบสนองเขียน(rsArray(j,i)&<br><br>)
ต่อไป
ต่อไป
สิ้นสุดถ้า
%>เวลาแคช หน่วยเริ่มต้นคือ 10 นาทีในหน่วยวินาที คุณยังสามารถตั้งค่าแคชได้ CacheTime=60*30 30 นาทีด้วยตัวเอง