2009-09-19 61 views
0

我正在開發一個Web項目,它需要從多個用戶和大量數據進行相當多的更新。無刷新更新網站(大量數據)的最有效方式?

預期的數據量是70個唯一行,每行有14個需要定期更新的字段。這共有980個領域。

我首先嚐試了一系列使用for循環更新所有字段的同步ajax查詢到數據庫。這造成了很大的懸掛。我會說,在更新頁面被凍結之間的30秒內,我會持續20秒。

下一次嘗試是使用onsuccess異步地運行ajax查詢,以更新for循環中的字段。這減慢了減速,但我遇到了奇怪的問題。我認爲我的for循環變量更改導致東西被寫入錯誤的HTML元素。

目前我有一個後端.asp頁寫HTML,並清除包含div的innerHTML,然後設置div.innerHTML = transport.responseText。這似乎對我來說工作得很好,但我只是好奇別人會用什麼工具來更新這些數據(vbscript,javascript和Access數據庫)。

跨所有工作站的數據將是相同的,並且多個用戶將實時交互編輯數據。但是,他們每個人都會關心更新他們自己的部分數據,但是需要讓所有用戶在最新的迭代中都可以更新和查看。

回答

1

一個HTML表1000名的字段不是「大量的數據」。

如果你給一個ID給每個細胞,並使用JSON或簡單CSV獲取數據,然後使用javascript,因爲瀏覽器並不需要重繪表作出新的DOM結構,這將是更快更新所有。

POR例如:

試想一下,服務器對你的數據是這樣的: 12,234,564,423,1223,2413,133,113,5443 ...

然後在JavaScript你可以:

var data = responseText.split(','); 

,然後填寫表(假設表細胞所具有的ID名稱,如CELL_0,CELL_1,CELL_2 ...)。

for (i=0; i<data.length; i++) { 
    document.getElementById('CELL_'+i).innerHTML=data[i]; 
} 

就是這樣。

+0

這與我以前的做法非常接近。不過,我把它當作JSON傳遞。原型eval.json是處理器密集型調用嗎? – 2009-09-26 06:14:32

+0

對於你的問題你說:「目前我有一個後端.asp頁面編寫HTML,並清除包含div的innerHTML,然後設置div.innerHTML = transport.responseText。」。這與更新單元格內容完全不同。對於只有1000個值JSON是可以的。 – Peter 2009-09-26 22:13:21

+0

是的...我試圖更新單元格內容,但是我收到了一些非常奇怪的行爲,所以我改爲這樣做。 – 2009-09-29 06:30:46

0

用戶希望如何與頁面進行交互?多個用戶會同時處理相同的數據嗎?他們是否期望看到其他的結果?你標記了這個asp.net,但只提及能夠使用VBScript,JavaScript和訪問 - 這是怎樣的asp.net?

編輯:

感謝您的澄清。每行都有編輯/保存按鈕有幫助嗎?行將被讀取,直到用戶需要編輯他們的數據(我假設他們正在編輯每一行)數據將刷新,並且該行將被鎖定以供任何其他用戶編輯。用戶完成後,單擊保存並更新其數據,該行被解鎖,並刷新頁面的數據。您還可以讓ajax每隔幾分鐘運行一次,以便在用戶未進行主動編輯時獲取最新信息。另外 - 根據數據結構的不同,您應該只需要獲取自用戶頁面上次更新後更改的數據。無需每次都獲得一切。你的更新也應該很小,僅限於對用戶的行,他們正在編輯的數據。

+0

沒有意識到我標記它的asp.net,我的意思是隻標記它的ASP,這似乎並不存在。 爲了清晰起見,我編輯了這篇文章,包括回答你的問題。 – 2009-09-19 01:45:45

相關問題