<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      完成 asp 的服務器無刷新推技術

      [摘要]關于推送技術 ----------------------------- 轉載請注明出處:一鶴.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

      前些天寫了一個小軟件:模擬精靈,雖然很簡單,不過很實用,也很好玩
      也是必備的桌面工具,推薦下載:



      日韩精品一区二区三区高清