asp強大的application是php中所沒有的。昨天朋友抱怨他的人才網站讀取速度慢,於是我幫他把asp中讀庫比較費時的部分用application做了緩存。
函數getcache,會自動建立需要的緩存。
Function getcache(funsname,isreset,isarr,timeinfo)
'funsname — 需要緩存的內容,這裡要輸入一個function名
'isreset –是否更新[值:0(根據時間或判斷緩存為空時自動更新)、1(主動更新)]
' isarr —- 所緩存的內容是否為一個數據[0為字符串,1為數組]
' timeinfo —- 緩存更新時間,單位為秒,當值為0時,則只在緩存為空時,才更新
dim domain = cnzhaopin.com.cn
Dim temp_getconfig
Dim re_getcache : re_getcache = False
Dim temp_isarray_type : temp_isarray_type = False
Dim Appfunsname : Appfunsname = Replace(Replace(Replace(funsname,(,),),),,,.)
If isarr = 1 Then temp_isarray_type = True
If isreset = 1 Then re_getcache = True
If isreset = 2 Then
execute(temp_getconfig=&funsname)
getcache = temp_getconfig
Exit Function
End If
If Application(domain&_&Appfunsname&_time) = And timeinfo<>0 Then re_getcache = True
If Not re_getcache Then
If temp_isarray_type Then
If Not IsArray(Application(domain&_&Appfunsname)) Then re_getcache = True
Else
If Application(domain&_&Appfunsname) = Then re_getcache = True
End If
End If
If Not re_getcache And timeinfo<>0 Then
If Int(DateDiff(s,Application(domain&_&Appfunsname&_time),now()))>timeinfo Then re_getcache = True
End If
If re_getcache Then
execute(temp_getconfig=&funsname)
Application.Lock
Application(domain&_&Appfunsname) = temp_getconfig
Application(domain&_&Appfunsname&_time) = Now()
Application.UnLock
Else
temp_getconfig=Application(domain&_&Appfunsname)
End If
getcache = temp_getconfig
End Function
使用時:
Function output3
output3=
set newrs=conn.execute(select TOP 60 companyname,comid,vipdata,ishot from company where isok=1 and vipqx>60 and vipqx<300 and vip=1 and comid in (select comid from jobs where zt<>1) order by newid())
do while not newrs.eof
output3=output3 & ……….
newrs.movenext
loop
newrs.close
set newrs=nothing
End function
response.write getcache(output3″,0,0,3600)