<%
'相关变量说明
'site_info(0)=网站标题
'site_info(1)=网站URL
'site_info(2)=站长信箱
'site_info(3)=Logo地址
'site_info(4)=Banner地址
'site_info(5)=版权信息
'site_info(6)=上传文件目录
'site_info(7)=模板文件目录
'site_info(8)=每页显示记录数量（此项作用于后台管理）
'site_info(9)=是否显示页面执行时间
'site_info(10)=留言本地址
'site_info(11)=每页显示记录数量（此项作用于前台）
'site_info(12)=上传文件大小限制
'site_info(13)=上传文件类型
'site_info(14)=ubb Html

dim myCache
set myCache=new Cache

myCache.name="config"
'mycache.makeEmpty '释放内存，测试用
if myCache.valid then
   site_info=myCache.value
else
  mSql = "Select F_SiteInfo from T_Config where F_ID=1"
  set rst = conn.execute(mSql)
  if rst.Eof and rst.Bof then
     response.write "程序载入失败！"
     response.end
  else
     site_info = split(rst(0),"|")
	 myCache.add site_info,dateadd("n",30,now)
  end if
  rst.close
  set rst=nothing
end if

'**********************************************
'	vbs Cache类
'
'	属性valid，是否可用，取值前判断
'	属性name，cache名，新建对象后赋值
'	方法add(值,到期时间)，设置cache内容
'	属性value，返回cache内容
'	属性blempty，是否未设置值
'	方法makeEmpty，释放内存，测试用
'	方法equal(变量1)，判断cache值是否和变量1相同
'	方法expires(time)，修改过期时间为time
'**********************************************

class Cache
	private obj			'cache内容
	private expireTime		'过期时间
	private expireTimeName	'过期时间application名
	private cacheName		'cache内容application名
	private path			'uri
	
	private sub class_initialize()
		path=request.servervariables("url")
		path=left(path,instrRev(path,"/"))
	end sub
	
	private sub class_terminate()
	end sub
	
	public property get blEmpty
		'是否为空
		if isempty(obj) then
			blEmpty=true
		else
			blEmpty=false
		end if
	end property
	
	public property get valid
		'是否可用(过期)
		if isempty(obj) or not isDate(expireTime) then
			valid=false
		elseif CDate(expireTime)<now then
				valid=false
		else
			valid=true
		end if
	end property
	
	public property let name(str)
		'设置cache名
		cacheName=str & path
		obj=application(cacheName)
		expireTimeName=str & "expires" & path
		expireTime=application(expireTimeName)
	end property
	
	public property let expires(tm)
		'重设置过期时间
		expireTime=tm
		application.lock
		application(expireTimeName)=expireTime
		application.unlock
	end property
	
	public sub add(var,expire)
		'赋值
		if isempty(var) or not isDate(expire) then
			exit sub
		end if
		obj=var
		expireTime=expire
		application.lock
		application(cacheName)=obj
		application(expireTimeName)=expireTime
		application.unlock
	end sub
	
	public property get value
		'取值
		if isempty(obj) or not isDate(expireTime) then
			value=null
		elseif CDate(expireTime)<now then
			value=null
		else
			value=obj
		end if
	end property
	
	public sub makeEmpty()
		'释放application
		application.lock
		application(cacheName)=empty
		application(expireTimeName)=empty
		application.unlock
		obj=empty
		expireTime=empty
	end sub

	public function equal(var2)
		'比较
		if typename(obj)<>typename(var2) then
			equal=false
		elseif typename(obj)="Object" then
			if obj is var2 then
				equal=true
			else
				equal=false
			end if
		elseif typename(obj)="Variant()" then
			if join(obj,"^")=join(var2,"^") then
				equal=true
			else
				equal=false
			end if
		else
			if obj=var2 then
				equal=true
			else
				equal=false
			end if
		end if
	end function
end class

'清除cache内容
function clearapp()
on error resume next
dim i
for i=1 to application.Contents.count
    application.Contents(i)=empty
next
end function
%>

