網站是首頁訪問量是最大的,但是如果在打開首頁的時候速度非常緩慢,那么就會影響用戶們的瀏覽欲望,那么我們要如何提高網站的首頁性能呢?那么我們現在就去看看asp提高首頁性能的技巧。
通常我們把需要經過復雜運算或者查詢數據庫得出的數據緩存起來或者生成靜態網頁來提高web應用的性能,這次我們直接把首頁的輸出緩存成一個字符串,然后定時更新,即照顧了性能,又不影響首頁的時效性.這里用到了一些VBS自定義類,Application對象,XmlHttp對象,adodb.stream對象的一些東西。
最好讓這個頁和你要緩存的頁在一個目錄下,要不有些相對路徑的圖片就無法顯示了,另外緩存有的頁面會出現亂碼,我還不知道怎么解決這個問題呢,可能在Response的時候需要設置一下編碼類型,大家可以試試
?
復制代碼 代碼如下:
<%?
Dim?wawa,StarTime,EndTime?
StarTime=Timer()?
Set?wawa=new?Cls_Cache?
wawa.Reloadtime=0.5?
wawa.CacheName="wawa"?
wawa.Name="XmlInfoIndex"?
If?wawa.ObjIsEmpty()?Then?CacheXmlInfoIndex()?
Response.Write?wawa.value?
EndTime=Timer()?
Response.Write?"<br>執行時間:"?&?FormatNumber((Endtime-StarTime)*1000,5)?&?"毫秒。"?
Sub?CacheXmlInfoIndex()?
?Dim?BodyText,?xml?
?Set?xml?=?Server.CreateObject("Microsoft.XMLHTTP")?
?'把下面的地址替換成你的首頁的文件地址,一定要用http://開頭的絕對路徑,不能寫相對路徑?
?xml.Open?"GET",?"http://onlytiancai/bak/vote/InfoIndex.asp",?False?
?xml.Send???
?BodyText=xml.ResponseBody?
?BodyText=BytesToBstr(BodyText,"gb2312")?
?wawa.Value=BodyText?
Set?xml?=?Nothing?
End?Sub?
Function?BytesToBstr(body,Cset)?
????????dim?objstream?
????????set?objstream?=?Server.CreateObject("adodb.stream")?
????????objstream.Type?=?1?
????????objstream.Mode?=3?
????????objstream.Open?
????????objstream.Write?body?
????????objstream.Position?=?0?
????????objstream.Type?=?2?
????????objstream.Charset?=?Cset?
????????BytesToBstr?=?objstream.ReadText??
????????objstream.Close?
????????set?objstream?=?nothing?
End?Function?
%>?
<%?
'下面這個類可以保存在單獨的文件里,然后包含到此頁?
Class?Cls_Cache?
?Rem?==================使用說明==============================================?
?Rem?=?本類模塊是動網先鋒原創,作者:迷城浪子。如采用本類模塊,請不要去掉這個說明。這段注釋不會影響執行的速度。=?
?Rem?=?作用:緩存和緩存管理類??????????????????????????????????????????????????????????????????????????????????=?
?Rem?=?公有變量:Reloadtime?過期時間(單位為分鐘)缺省值為14400,???????????????????????????????????????????????=?
?Rem?=?MaxCount?緩存對象的最大值,超過則自動刪除使用次數少的對象。缺省值為300??????????????????????????????????=?
?Rem?=?CacheName?緩存組的總名稱,缺省值為"Dvbbs",如果一個站點中有超過一個緩存組,則需要外部改變這個值。????????=?
?Rem?=?屬性:Name?定義緩存對象名稱,只寫屬性。??????????????????????????????????????????????????????????????????=?
?Rem?=?屬性:value?讀取和寫入緩存數據。?????????????????????????????????????????????????????????????????????????=??
?Rem?=?函數:ObjIsEmpty()判斷當前緩存是否過期。????????????????????????????????????????????????????????????????=?
?Rem?=?方法:DelCahe(MyCaheName)手工刪除一個緩存對象,參數是緩存對象的名稱。???????????????????????????????????=?
?Rem?================================================================?
?Public?Reloadtime,MaxCount,CacheName?
?Private?LocalCacheName,CacheData,DelCount?
?Private?Sub?Class_Initialize()?
??Reloadtime=14400?
??CacheName="Dvbbs"?
?End?Sub?
?Private?Sub?SetCache(SetName,NewValue)?
??Application.Lock?
??Application(SetName)?=?NewValue?
??Application.unLock?
?End?Sub??
?Private?Sub?makeEmpty(SetName)?
??Application.Lock?
??Application(SetName)?=?Empty?
??Application.unLock?
?End?Sub??
?Public??Property?Let?Name(ByVal?vNewValue)?
??LocalCacheName=LCase(vNewValue)?
?End?Property?
?Public??Property?Let?Value(ByVal?vNewValue)?
??If?LocalCacheName<>""?Then??
???CacheData=Application(CacheName&"_"&LocalCacheName)?
???If?IsArray(CacheData)??Then?
????CacheData(0)=vNewValue?
????CacheData(1)=Now()?
???Else?
????ReDim?CacheData(2)?
????CacheData(0)=vNewValue?
????CacheData(1)=Now()?
???End?If?
???SetCache?CacheName&"_"&LocalCacheName,CacheData?
??Else?
???Err.Raise?vbObjectError?+?1,?"DvbbsCacheServer",?"?please?change?the?CacheName."?
??End?If???
?End?Property?
?Public?Property?Get?Value()?
??If?LocalCacheName<>""?Then??
???CacheData=Application(CacheName&"_"&LocalCacheName)??
???If?IsArray(CacheData)?Then?
????Value=CacheData(0)?
???Else?
????Err.Raise?vbObjectError?+?1,?"DvbbsCacheServer",?"?The?CacheData?Is?Empty."?
???End?If?
??Else?
???Err.Raise?vbObjectError?+?1,?"DvbbsCacheServer",?"?please?change?the?CacheName."?
??End?If?
?End?Property?
?Public?Function?ObjIsEmpty()?
??ObjIsEmpty=True?
??CacheData=Application(CacheName&"_"&LocalCacheName)?
??If?Not?IsArray(CacheData)?Then?Exit?Function?
??If?Not?IsDate(CacheData(1))?Then?Exit?Function?
??If?DateDiff("s",CDate(CacheData(1)),Now())?<?60*Reloadtime??Then?
???ObjIsEmpty=False?
??End?If?
?End?Function?
?Public?Sub?DelCahe(MyCaheName)?
??makeEmpty(CacheName&"_"&MyCaheName)?
?End?Sub?
End?Class?
%>?
以上就是關于asp提高首頁性能的技巧,看完本文后大家都學會了么?如果想了解相關知識大家可以在錯新技術頻道查資料了解。?