台灣最大程式設計社群網站
線上人數
923
 
會員總數:245247
討論主題:189105
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> 利用ajax實現"多線程"下載資料庫以減少client等待時間
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
利用ajax實現"多線程"下載資料庫以減少client等待時間
價值 : 10 QP  點閱數:2890 回應數:9

樓主

一個頭兩個大
初級專家
1530 29
1014 297
發送站內信

為了減少cross-post所造成的衝擊,詳情請看ACCESS版裡的相同標題的討論串:

http://www.blueshop.com.tw/board/show.asp?subcde=BRD20060917153055E9H&fumcde=FUM200410061527123KL&rplcnt=0

個人的本科與電腦完全無關,若用詞有誤,還請前輩們多多見諒:
個人對"多線程"的理解是"同時送出兩個以上的連線以加速下載"

搜尋相關Tags的文章: [ ajax ] , [ access ] , [ mdb ] , [ 多線程 ] , [ 效能 ] ,
本篇文章發表於2006-09-17 22:01
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
你標題答案的應該可以答yes
不過應該說成ajax的"非同步"
本篇文章回覆於2006-09-22 16:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

一個頭兩個大
檢舉此回應
非同步!=多線程

而且如在下在那個版中的回覆,
在下測試後,發現ajax無法做到多線程,
故個人給標題的答案是"No"
本篇文章回覆於2006-09-22 19:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
呵, 應該是流覽器用"多線程"實現"非同步"
本篇文章回覆於2006-09-22 21:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

一個頭兩個大
檢舉此回應
剛想到,雖然ajax送出時是輪流送出,但只要讓執行ado的程式不是php/asp本身,而是php/asp去呼叫的一個負責執行ado的wscript檔,
就能讓每個php/asp本身不用等ado執行完就能回傳網頁,以馬上送出下一個連線.(這時會因為asp/php沒執行ado就回傳,於是每次送出的連線,之間只間隔0.1秒)
於是既使每個ado執行起來要10秒,這時送完10個連線仍然只須要10*0.1=1秒,而不再是先前(讓php/asp執行ado)的10*10=100秒

接下來就是client script等10秒後再用ajax去讀每個wscript產生的database檔案(xml或.js),在client端分析排序後再呈現即可.
於是原本要等100秒才能看到的搜尋結果,現在只要花10多秒就能看到,搜尋速度提昇了近10倍.

所以只要多加個技巧:"讓ado不是在php/asp中執行,而是在wscript檔中執行"
就能讓ajax達到多線程加速的效果了.
本篇文章回覆於2006-10-14 02:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
2個問題
1.你是不是用單一的AJAX去執行多個非同步下載資料, 有試過起多個AJAX去下載吧
也就是說用10個AJAX各去執行一個非同步下載,而不是用一個AJAX去執行10個非同步

2.你的PHP是掛在IIS下或APACHE下,我記得在IIS下,一次只執行一個程式,並不是多工的, 在APACHE也是要看是哪一種掛載方法
也就是就,雖然你一次呼叫很次程式,可是PHP卻一次只做一個程式



不過我在想,網頁有沒有必要設計一個下載百筆資料的功能,CLIENT受得了嗎?

本篇文章回覆於2006-10-14 09:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

一個頭兩個大
檢舉此回應
>>1.你是不是用單一的AJAX去執行多個非同步下載資料, 有試過起多個AJAX去下載吧
>>也就是說用10個AJAX各去執行一個非同步下載,而不是用一個AJAX去執行10個非同步
在下當初測試時巳用過後者,每個ajax連線都是用自己一個新的new ActiveXObject("Microsoft.XMLHTTP");,然後同時下達send指令
測試結果是:
若[連線1]的ado對像只須要10秒就能回傳,且[連線2]的須要60秒,
同時send的結果是:兩個都在快70秒時才在client呈現.

>>2.你的PHP是掛在IIS下或APACHE下,我記得在IIS下,一次只執行一個程式,並不是多工的, 在APACHE也是要看是哪一種掛載方法
>>也就是就,雖然你一次呼叫很次程式,可是PHP卻一次只做一個程式
在下測試時是用winXP + Abyss webserver + php5

>>不過我在想,網頁有沒有必要設計一個下載百筆資料的功能,CLIENT受得了嗎?
以目錄頁來說,百筆還算OK的(因為僅是目錄資訊,每筆的資料也沒有多大)
本篇文章回覆於2006-10-14 21:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

一個頭兩個大
檢舉此回應
忘了註明,在下當初也試過ajax without xmlhttp(也就是用document.appendChild插入外部js的方法)
傳回client的時間與正港ajax相同.

事實上在下比較喜歡ajax without xmlhttp,
在下現役的ajax程式也都是使用ajax without xmlhttp而非正港ajax,
因為針對在client sort資料來說,當資料量大時,直接帶入外部js(以致於字串們一開始就以array的形式進入網頁),處理效能當然會比用xmlhttp好很多(因為省下"把大量字串變成大量array"的時間)
本篇文章回覆於2006-10-14 22:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

一個頭兩個大
檢舉此回應
算是解決了.
以下是在下用3F的概念想出的設計,
雖然大致上算達到了在下想要的效果,
但整個設計看起來就是那麼的複雜難讀,
這也是為何在下沒一開始就接受3F概念的原因 -- 程式設計上變得太過複雜

但在有前輩能提供更好的建議前,
抱著先求有再求好的心態使用,也還OK



把事情搞得那麼複雜,就是為了能盡量像google那樣 -- 盡管資料庫大得嚇人,都能夠在極短的時間內把搜尋結果回傳給client
本篇文章回覆於2006-10-16 20:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

一個頭兩個大
檢舉此回應
8F貼錯地方 @@~
原本是要貼在以下這個討論串的:
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20061015193903DKN&fumcde=FUM2004100615300747K&rplcnt=9
本篇文章回覆於2006-10-16 20:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.