用ASP編寫計數器的最佳化方法

來源:互聯網
上載者:User

 很多的網站都有記數器,用來記錄網站的訪問量,這給網站管理員即時瞭解本網站的運行及訪問情況提供了很多的方便。 筆者研究過很多用ASP編寫的計數器程式,發現大部份都是在一個訪客訪問網站的時候就打文字檔或資料庫,讀取以前的計數值進行加1,然後再寫入檔案,若網站訪問量很大,可能會對系統造成很大的負擔,那麼有沒有最佳化的方法呢,筆者經過研究測試,答案是:有。

    熟悉ASP的朋友都知道,ASP提供一個Application屬性用來儲存伺服器的一些公開變數,我們可以用這個變數來儲存記數器的資訊。

    思路是先設定兩個Application變數,一個Application(“TotalCount”),用來儲存記數值;另一個Application(“LastwriteTime”),用來儲存上次把記數值儲存到檔案的時間。我們可以自己定義把計數值儲存到檔案的間隔時間,比如1小時、1天或者一個月。在有訪客訪網站的時候,讓Application(“TotalCount”)進行加1,如果上次儲存計數的時間與現在的時間差大於我們設定的儲存時間間隔值,那麼就把當前的計數值寫入檔案儲存,這樣就減少了程式的IO操作,節約了系統的負擔。

    為了避免發生意外,如斷電或者伺服器停止反應需待重啟等,我們可以設定儲存時間間隔為2小時,這樣即使發生意外,損失也不會太大。

常式如下:

<%

Dim oFSO   '定義FSO組件對象

Dim oFile  '定義讀寫檔案對象

Dim nCount '定義從檔案中讀取的記數值

Dim sFilePath '定義計數器儲存檔案的路徑

Const iInterval=2 '定義儲存時間間隔為2小時

SFilePath=Server.MapPath("Count/Count.txt")  '假設計數器檔案在根目錄下的Count目錄中,檔案名稱為Count.txt

IF  Application("TotalCount")=0 or Application("TotalCount")="" THEN

'如果第一次運行網站,比如重啟後,我們就需要從檔案中讀取出以前的計數值

   Set oFSO=Server.CreateObject("Scripting.FileSystemObject") '執行個體化檔案操作對象oFSO

      IF not oFSO.FileExists(sFilePath) THEN

          OFile=oFSO.CreateTextFile(sFilePath,true)  '如果檔案不存在,則建立一個文

      oFile.Write("1")   寫入當前的計數值"1"

           oFile.close

           Application("TotalCount")=1

      ELSE

            Set oFile = oFSOt.OpenTextFile(sFilePath)

            NCount=OFile.ReadLine

            Application("TotalCount")=Clng(nCount)+1

            OFile.close

      End IF

      Application("LastwriteTime")= Now  '設定最後一次訪問的時間為目前時間

 

ELSE

      Application("TotalCount")= Application("TotalCount")+1

      IF DateDiff("H", Application("LastwriteTime"),Now)>iInterval THEN

       '如果目前時間與上次儲存計數值的時間差大於設定的時間間隔,則把計數值重新寫入檔案

           Set oFSO=Server.CreateObject("Scripting.FileSystemObject") '執行個體化檔案操作對象oFSO

           OFile=oFSO.OpenTextFile(sFilePath,true)  '開啟檔案

           oFile.Write(Application("TotalCount"))   '寫入當前的計數值

           oFile.close

           Application("LastwriteTime")= Now  '設定最後一次訪問的時間為目前時間

       END IF

End IF

Response.Write("歡迎光臨本網站,你是訪問本網站的第" & Application("TotalCount") & "位訪客!")

%>

本常式在Windows2000 IIS5.0下通過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.