2012-01-20 92 views
28

我正在用JavaScript/jquery編寫一些自定義控件來創建樹。響應瀏覽器的最大json大小

爲了創建樹,我們提供了json對象作爲java-script的輸入來迭代並創建樹。

由於數據量可能會增加到25K個節點。在基本的負載測試中,我們發現瀏覽器會因爲這種音量而崩潰。

備用解決方案只是通過AJAX請求加載節點的第一級和按需加載。第一層的容量可以變化多達500-1K節點。

json作爲服務器響應的最大大小是多少?在瀏覽器上處理大量數據的最佳方法是什麼?

+0

沒有大小限制,我已經處理了需要5秒完成的Ajax請求。 – riship89

+1

@ hrishikeshp19我也有,而且也只有500字節的數據值...什麼是大小限制與您的時間量化有關? – Jeach

+0

我一直認爲有限制...所以我運行了一個非常簡單的Ajax循環,我將發送一個PHP請求/ Apache腳本的一個URL請求(它將它發送回來),在每個循環中增加'數據有效載荷'一個字符。當我的數據大小達到'8097字節'時,我收到了來自服務器的「414(Request-URI Too Large)」消息。如果你是Google的話,你可以查看更多關於414錯誤的詳細信息......這是維基頁面:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Jeach

回答

13

沒有http響應的最大大小限制(或Int的最大大小或瀏覽器的限制或服務器的限制已配置)。

最好的方法是使用AJAX在需要顯示的時候加載部分數據。

+8

在某些瀏覽器中,取決於Json將如何評估。如果瀏覽器有限制,移動Safari瀏覽器將不會評估()json,如果它大於10 MB –

+0

@ckuetbach這是正確的。 – xdazz

+1

也可能值得注意的是[服務器可以有最大尺寸](http://forums.asp.net/t/1090853.aspx/1)。 – ruffin

7

HTTP響應沒有大小限制。 JSON即將作爲HTTP響應。所以它也沒有大小限制。

如果從JSON響應中分析的對象消耗太多內存,則可能存在問題。它會使瀏覽器崩潰。因此,最好使用不同的數據大小進行測試,並檢查您的應用程序是否正常工作。

我認爲延遲加載是如此大量數據的最佳方法。特別是在處理對象文字時。

請參閱High Performance Ajax Application來自雅虎的演示文稿。

3

嗯,我想我已經太晚了,不能給我兩分錢。補充shiplu.mokadd.im的答案瀏覽器內存是一個限制,HTTP響應可以根據TCP規範具有任意數量的數據。

但是我有一個應用程序使用Google Chrome(29.0.xx版)和Jetty服務器,Jetty服務器的響應有效負載爲335MB。雖然瀏覽器正在收到Chrome瀏覽器停止播放「IPC消息太大」的響應。雖然這是Google Chrome專用(不確定其他瀏覽器),但最大響應大小應該有一個閾值。