2010-07-19 413 views
1

我需要從REST服務中加載數千條用戶數據(聯繫人管理系統中的用戶聯繫人,確切地說)的記錄,並對其執行搜索。不幸的是,REST服務沒有提供滿足我需求的搜索,所以我簡化爲只加載一堆數據並自行搜索。加載記錄非常耗時,所以我只想爲每個用戶做一次。我應該在瀏覽器內存中緩存多少數據有限制嗎?

顯然這個數據需要被緩存。不幸的是,服務器端緩存不是一個選項。我的客戶端在多臺服務器上運行應用程序,並且無法預測給定請求將落在哪臺服務器上。

因此,下一個選項是在瀏覽器端緩存這些數據並在其上運行搜索。對於有成千上萬個聯繫人的用戶,這可能意味着要緩存數兆字節的數據。我可能會在瀏覽器內存中存儲幾個JavaScript數據時遇到什麼問題?

+5

只是不要超過9000 – 2010-07-19 16:23:21

+2

9000會發生什麼? – morgancodes 2010-07-19 16:28:22

+0

我不確定限制是什麼,也不知道是否有辦法找到限制(因爲我確定它是系統相關的)。但最糟糕的情況是瀏覽器崩潰。這一點,我從經驗中知道用JS做我自己愚蠢的事情。 (我不是說你的項目很傻,我的是。) – 2010-07-19 16:28:51

回答

4

存儲幾個Javascript數據應該不會引起任何問題。內存泄漏會。想想現代計算機有多少內存 - 幾兆字節是衆所周知的下降分子。

+0

謝謝熊。那也是我的想法,只需要夥計來支持我。當我進入這個行業時,我會花一整天的時間試圖刮幾張k off的圖像。事情已經改變... – morgancodes 2010-07-19 16:43:57

1

您可以在瀏覽器中安全地管理數萬條記錄。我在這樣的數據集上運行搜索&排序基準與jOrder(http://github.com/danstocker/jorder),沒有問題。

+0

謝謝丹。在一個應用程序爲廣泛的用戶羣提供服務的情況下,其中一些用戶將使用較舊的機器? – morgancodes 2010-07-19 16:46:24

+0

那麼,我已經在最新的硬件上運行的最新瀏覽器中運行測試,但我認爲可以肯定地說,只要這些舊機器中有足夠的內存,就可以工作。 – 2010-07-19 17:03:28

+0

「安全地說」讓我緊張:)但很高興知道你沒有遇到任何問題。 – morgancodes 2010-07-19 18:20:22

1

我會看看分佈式服務器端緩存。如果您將數據保存在瀏覽器中,隨着系統的增長,您將不得不增加瀏覽器緩存的使用壽命以減少流量。

+0

謝謝吉姆。問題不會隨着「系統」的增長而變化,而會隨着個人用戶的聯繫人列表的增長而增加。實際上,大多數用戶將有不到1000個聯繫人。但有些人可能有數千人。不太清楚「通過增加瀏覽器緩存的使用壽命來減少流量」的含義。 – morgancodes 2010-07-19 17:40:06

+0

我試圖說,隨着用戶增加,交通也會如此。減少流量的一種方法是將數據緩存更長時間。 對不起,我想了一下。忽略第二部分。 – Jim 2010-07-19 18:50:16

3

如果您打算讓用戶使用移動設備,請在做任何客戶端時務必小心。儘管臺式機不會有問題,但Mobile Safari將停止在(我相信)10Mb的JavaScript數據上工作。 (有關Mobile Safari的更多信息,請參閱this article)。其他移動瀏覽器可能會有類似的內存限制。找出您可以返回的最小信息集以允許用戶執行搜索,然後在您需要時從REST API延遲加載更豐富的記錄。

作爲替代方法,代理REST服務,並在您控制的服務器上創建您自己的搜索。您可以使用Python + Django + XML Models快速輕鬆地完成此操作。毫無疑問,無論您的首選開發語言是什麼,都有同樣簡單的方法來完成此任務。 (在重新閱讀時,我發現你無法進行服務器端緩存,這可能使這一點沒有實際意義)。

+0

謝謝,並感謝鏈接到移動Safari瀏覽器文章。 – morgancodes 2010-07-19 17:55:12