完成 asp 的服務器無刷新推技術
發表時間:2024-05-29 來源:明輝站整理相關軟件相關文章人氣:
[摘要]關于推送技術 ----------------------------- 轉載請注明出處:一鶴.NET_WWW.1HE.NET Client PULL(客戶端拉技術) 通常,聊天室通過不斷刷新來顯示服務器的最新信息,即所謂的Client PULL(客戶端拉技術)Client PULL必須不停的建立...
關于推送技術
-----------------------------
轉載請注明出處:一鶴.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
前些天寫了一個小軟件:模擬精靈,雖然很簡單,不過很實用,也很好玩
也是必備的桌面工具,推薦下載: