伺服器|重新整理|無重新整理 關於推送技術
-----------------------------
轉載請註明出處:一鶴.NET_WWW.1HE.NET
Client PULL(用戶端拉技術)
通常,聊天室通過不斷重新整理來顯示伺服器的最新資訊,即所謂的Client PULL(用戶端拉技術)Client PULL必須不停的建立串連,重新整理資訊,中斷連線,這樣效率很低,而且速度很慢.(如果加快速度,頻繁的建立中斷連線重新整理頁面都會增加伺服器與用戶端的資源消耗)
Server Push(伺服器推技術)
推技術就是建立一個串連以後,由伺服器主動的把最新資訊源源不斷的推送到用戶端
不需要不停的建立中斷連線,不需要重新整理頁面,相比之下,推技術效率更好速度最快
但是很可惜,一直以來,ASP都不能實現erver Push技術
曾經看過微軟網站提供的ASP推送技術方案,用死迴圈達到伺服器的延時實現Server Push技術,這種代碼只要一個用戶端執行,CPU佔用立即達到百分之百,最重要的是受到ASP線程限制,開啟這個頁面,其他的ASP頁都必須排隊等待這個頁面執行完畢。
實現 asp 的伺服器無重新整理推技術
-----------------------------
轉載請註明出處:一鶴.NET_WWW.1HE.NET
首先我用C++寫了一個ASPpush.DLL,通過ASP代碼的配合達到零負載的延時效果
下載ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe
使用ASP指令EnableSessionState=False突破ASP的線程限制
(這就是最關鍵的地方了,其實ASP本身是多線程的之所以你在ASP中只能得到單線程其原因是ASP對每一個會話產生一個線程,如果在ASP頁面前用上EnableSessionState=False指令,就可以得到一個獨立的線程與TCP串連用來源源不斷的向用戶端推送新的資訊)
使用ASP的Response.IsClientConnected屬性判斷串連及時回收資源
使用以上方法,我製作了一個聊天室,
經過測試,一百人線上聊天,系統的全部CPU佔用不超過百分之五(Windows 2003),
無論在記憶體佔用還是CPU佔用都沒有超過使用用戶端重新整理的聊天室
實際上,使用用戶端重新整理的方法,仍然是一個對伺服器持續的資源佔用,而且必須頻繁的建立串連中斷連線,對於聊天室來說,用戶端重新整理的聊天室的資源佔用是沒有任何優勢的,而且速度非常慢
準備工作
-----------------------------
轉載請註明出處:一鶴.NET_WWW.1HE.NET
下載ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe
解壓縮後首先請運行:Com.reg(這個檔案會在右鍵菜單中添加註冊COM組件的子功能表)
將ASPpush.dll 拷貝到系統目錄
windows2000 $:/winnt/system32
windows2003 $:/windows/system32
右鍵點擊system32/ASPpush.dll
點擊右鍵菜單中出現的“註冊DLL”
(當然你可以在命令列中註冊:Regsvr32 $:/windows/system32/ASPpush.dll)
注意:$: 更換為系統硬碟
範例程式碼
-----------------------------
轉載請註明出處:一鶴.NET_WWW.1HE.NET
下面是使用ASPpush.DLL實現伺服器推送的範例程式碼:
<%@ Language="VBScript" codepage ="936" EnableSessionState=False %>
<%
Response.Buffer = True
set ASPpush = Server.CreateObject("ASPpush.page")
Do While Response.IsClientConnected
'================================
'在這裡修改或自訂要執行的ASP代碼
Response.Write "我暈...<br>"
'================================
Response.Flush
ASPpush.wait 100 '後面的數字以毫秒為單位(1000毫秒=1秒),指定推送的速度
Loop
set ASPpush=nothing
%>
本文主要介紹推技術在ASP中實現的原理,至於具體的實現可能還需要您自已發揮了
----------
附註:
批量檔案播種機最新版:網站程式製作必備工具
http://jh.1he.net/yes/down/list.asp?id=106
前些天寫了一個小軟體:類比精靈,雖然很簡單,不過很實用,也很好玩
也是必備的案頭工具,推薦下載:
http://jh.1he.net/twtbbs/showtopic.asp?id=16931&passre=&forumid=41