asp缓存类

复制代码代码如下所示:
<
xml缓存类
--------------------------------------------------------------------
转载时请保留版权信息。
作者:6个月的雨人。
版本:Ver1.0
这部分的类使用walkmanxml参考数据缓存的类,它是你欢迎进步的交流更方便。
--------------------------------------------------------------------
类xmlcachecls
私人m_dataconn数据源,必须被打开
私人m_cachetime的缓存时间,默认10分钟每秒
私人m_xmlfile'xml路径,用绝对地址,不需要添加扩展名
私人m_sql'sql声明
由私人m_sqlarr返回数据的数组(只读)
私人m_readon(只读)返回阅读模式1数据库2-xml检测

=========================================的阶级属性

数据源
公共属性设置CONN(V)
集m_dataconn = V
最后的财产
公共财产得到连接
m_dataconn conn =
最后的财产

缓存时间
公共财产让cachetime(V)
m_cachetime = V
最后的财产
公共财产得到cachetime
cachetime = m_cachetime
最后的财产

具有绝对地址的XML路径
公共财产让xmlfile(V)
m_xmlfile = V
最后的财产
公共财产得到xml文件
m_xmlfile xmlfile =
最后的财产

SQL语句
公共财产让SQL(V)
m_sql = V
最后的财产
公共属性获取sql
SQL = m_sql
最后的财产
返回一组记录
公共财产得到sqlarr
sqlarr = m_sqlarr
最后的财产

返回读取模式
公共财产得到了解
原因= m_readon
最后的财产

=========================================破坏

私有子class_initialize()初始化类
m_cachetime = 60 * 10的默认缓存时间为10分钟
端子

私有子class_terminate()释放类

端子

=========================================公共方法的类

快速读取数据
公共功能readdata
如果FSOExistsFile(m_xmlfile)的存在,直接从XML读取XML缓存
readdatafromxml
m_readon = 2
其他的
readdatafromdb
m_readon = 1
最后如果
端功能

写入XML数据
公共功能writedatatoxml
如果FSOExistsFile(m_xmlfile)然后如果XML不过期
如果不isxmlcacheexpired(m_xmlfile,m_cachetime)然后退出功能
最后如果
昏暗的RS
昏暗的XML的内容
昏暗的K
XML的内容=
XML的内容为XML的内容vbnewline
XML的内容为XML的内容vbnewline
K = 0
集= server.createobject(ADODB。记录集)
rs.open m_sql,m_dataconn,1
而not rs.eof
XML的内容为XML的内容<项目
在遥感领域的各个领域
XML的内容为XML的内容field.name XMLStringEnCode(场。值)
下一个
移到下一项
k=k+1
XML的内容为XML的内容>vbnewline

关闭
设置=无
XML的内容为XML的内容vbnewline

昏暗的folderpath
folderpath =装饰(左(m_xmlfile,instrrev(m_xmlfile,)- 1))))
打电话给CreateDIR(folderpath )的创建文件夹
writestringtoxmlfile m_xmlfile,XML的内容
端功能

=========================================私有方法的类

快速读取XML文件中的数据。
私有函数readdatafromxml
昏暗的sqlarr()的阵列
昏暗的xmldoc'xmldoc对象
昏暗的objnode的子节点
在昏暗的itemslength的子节点的长度
暗淡的attributeslength子节点属性的长度
集server.createobject xmlDoc =(微软。XMLDOM )
XmlDoc。async = false
XmlDoc(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 Preserve SQLARR(attributeslength-1,items_i)
SQLArr(attributes_i,items_i)= objnode.childnodes(items_i)。属性(attributes_i)。Nodevalue
下一个
下一个
Set XmlDoc = Nothing
m_sqlarr = sqlarr
端功能

REM从数据库读取数据。
私有函数readdatafromdb
昏暗的RS
昏暗的sqlarr()
昏暗的K
K = 0
集= server.createobject(ADODB。记录集)
rs.open m_sql,m_dataconn,1
If Not (rs.eof and rs.bof) Then
而not rs.eof
昏暗的fieldlegth
fieldlegth = rs.fields.count
ReDim Preserve SQLARR(fieldlegth,K)
昏暗的场,
对于场,= 0 fieldlegth-1
SQLArr(场,,k)=遥感领域(场,值)。
下一个
移到下一项
k=k+1

最后如果
关闭
设置=无
m_sqlarr = sqlarr
端功能

=========================================辅助私有方法的类

快速写入XML文件
列兵Sub WriteStringToXMLFile(filename,STR)
低功率放大器
设置FS = CreateObject(脚本。FileSystemObject )
如果Not IsObject(FS)Exit Sub
设置TS = fs.opentextfile(文件名,2,真的)
Ts.writeline(STR)
ts.close
设置
设置FS =无
端子

REM确定XML缓存是否到期。
私有函数isxmlcacheexpired(文件,秒)
昏暗的filelasttime
filelasttime = fsogetfilelastmodifiedtime(文件)
如果DateAdd(S
isxmlcacheexpired =真
其他的
isxmlcacheexpired = false
最后如果
端功能

REM获取文件的最后修改时间。
私有函数fsogetfilelastmodifiedtime(文件)
昏暗的空中交通管制
设置FSO = CreateObject(脚本。FileSystemObject )
集F = fso.getfile(文件)
fsogetfilelastmodifiedtime = f.datelastmodified
设置f =无
设置FSO
端功能

是否存在REM文件
公共函数FSOExistsFile(文件)
暗淡的光
设置FSO = server.createobject(脚本。FileSystemObject )
如果fso.fileexists(文件)然后
fsoexistsfile =真
其他的
fsoexistsfile = false
最后如果
设置FSO
端功能

转义字符
私有函数XMLStringEnCode(STR)
如果str ,然后xmlstringencode = :退出功能
替换
替换(STR,>,>)
替换(STR,,)
替换
替换
xmlstringencode = str
端功能

创建文件夹
私有函数的CreateDIR(ByVal LocalPath)
下次继续出错
朦胧的我,文件对象,patharr,path_level,pathtmp,cpath
本地路径=取代(本地路径,
设置文件对象= server.createobject(脚本。FileSystemObject )
patharr =分(本地路径, / )
path_level = UBound(patharr)
我path_level = 0
如果我= 0然后
pathtmp = patharr(0) /
其他的
pathtmp = pathtmp patharr(我) /
最后如果
cpath =左(pathtmp,len(pathtmp)- 1)
如果不fileobject.folderexists(cpath)然后
response.write cpath
fileobject.createfolder cpath
最后如果
下一个
设置文件对象=没有
如果错误,数字<0,然后
createdir = false
呃。清晰
其他的
CreateDIR =真
最后如果
端功能
类的结束
设置缓存
功能setcache(xmlfilepath,cachetime、Conn、SQL)
设置缓存=新xmlcachecls
设置缓存。conn = Conn
xml文件= xmlfilepath缓存。
缓存
cachetime = cachetime缓存。
cache.writedatatoxml
设置缓存=无
端功能
读取缓存
功能readcache(xmlfilepath、Conn、SQL、ByRef ReadOn)
设置缓存=新xmlcachecls
设置缓存。conn = Conn
xml文件= xmlfilepath缓存。
缓存
cache.readdata
readcache = cache.sqlarr
ReadOn=cache.ReadOn
端功能
%>

使用方法uff1a
1将数据缓存到xml
代码:
复制代码代码如下所示:


<
设置缓存=新xmlcachecls
设置缓存。conn = Conn
缓存。xmlfile = server.mappath(xmlcache / /指数最高。XML)
缓存。SQL =选择前15 prod_id,prod_name,从tblproduction prod_uptime
cache.writedatatoxml
%>

2读取缓存数据
代码:
复制代码代码如下所示:


<
设置缓存=新xmlcachecls
设置缓存。conn = Conn
缓存。xmlfile = server.mappath(xmlcache / /指数最高。XML)
缓存。SQL =选择前15 prod_id,prod_name,prod_uptime从tblproduction顺序prod_id ASC
cache.readdata
rsarray = cache.sqlarr
如果ISArray(rsarray)然后
我= 0,UBound(rsarray,2)
J = 0,UBound(rsarray,1)
响应。写(rsarray(j,i))
下一个
下一个
最后如果
%>
缓存时间,默认10分钟每秒;你也可以设置自己的缓存。cachetime = 60 * 30 30分钟