asp提高首頁效能的一個技巧_ASP CLASS類

來源:互聯網
上載者:User
簡單介紹:一般一個網站的首頁訪問量是最大的,如果您的網站的首頁開啟的非常緩慢,您的客戶將會陸續離開你的網站.通常我們把需要經過複雜運算或者查詢資料庫得出的資料緩衝起來或者產生靜態網頁來提高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 
%> 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.