2012-01-20 4 views
28

Tôi đang tạo cây với một số điều khiển tùy chỉnh được chuẩn bị bằng JavaScript/jquery.Kích cỡ json tối đa để phản hồi trình duyệt

Để tạo cây, chúng tôi đang cung cấp đối tượng json làm đầu vào cho java-script để lặp qua và tạo cây.

Vì khối lượng dữ liệu có thể lên tới 25K nút. trong khi kiểm tra tải cơ bản, chúng tôi đã xác định rằng trình duyệt sẽ bị lỗi cho khối lượng đó.

Giải pháp thay thế chỉ tải mức đầu tiên của các nút và tải phần còn lại theo yêu cầu thông qua yêu cầu AJAX. khối lượng cấp độ đầu tiên có thể thay đổi lên đến 500 - 1K nút.

Kích thước tối đa mà json phải có như một phản hồi từ máy chủ. Điều gì có thể là cách tiếp cận tốt nhất để xử lý khối lượng dữ liệu đó trên trình duyệt.

+0

Không có giới hạn kích thước, tôi đã xử lý các yêu cầu Ajax mất 5 giây để hoàn thành. – riship89

+1

@ hrishikeshp19 Và tôi cũng vậy, và cũng chỉ có 500 byte giá trị của dữ liệu ... giới hạn kích thước có liên quan gì đến định lượng thời gian của bạn? – Jeach

+0

Tôi luôn nghĩ rằng có giới hạn ... vì vậy tôi đã chạy một vòng lặp Ajax rất đơn giản, nơi tôi sẽ gửi một script PHP/Apache một yêu cầu URL (nó gửi nó trở lại), tăng "tải trọng dữ liệu" bằng một ký tự trên mỗi vòng lặp . Khi kích thước dữ liệu của tôi đạt đến '8097 byte', tôi nhận được thông báo: "414 (Yêu cầu-URI quá lớn)" từ máy chủ. Bạn có thể xem thêm chi tiết về lỗi 414 nếu bạn sử dụng Google ... đây là trang Wiki: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Jeach

Trả lời

13

Không có giới hạn kích thước tối đa của phản hồi http (hoặc kích thước tối đa của Int hoặc giới hạn trình duyệt hoặc giới hạn máy chủ đã được định cấu hình).

Cách tiếp cận tốt nhất là sử dụng AJAX để tải một phần dữ liệu trong khi nó cần được hiển thị.

+8

Ther là kích thước tối đa trong một số trình duyệt, phụ thuộc vào cách Json sẽ được đánh giá. Các safari di động sẽ không eval() một json, nếu nó lớn hơn 10 MB –

+0

@ckuetbach Đó là đúng nếu trình duyệt có giới hạn. – xdazz

+1

Cũng có thể đáng chú ý là [máy chủ có thể có kích thước tối đa] (http://forums.asp.net/t/1090853.aspx/1). – ruffin

7

Phản hồi HTTP không có giới hạn kích thước. JSON là một phản hồi HTTP. Vì vậy, nó không có giới hạn kích thước hoặc.

Có thể có vấn đề nếu đối tượng được phân tích cú pháp từ phản hồi JSON tiêu thụ quá nhiều bộ nhớ. Nó sẽ làm hỏng trình duyệt. Vì vậy, tốt hơn bạn nên thử nghiệm với các kích thước dữ liệu khác nhau và kiểm tra xem ứng dụng của bạn có hoạt động chính xác hay không.

Tôi nghĩ rằng tải chậm là cách tiếp cận tốt nhất cho lượng dữ liệu lớn như vậy. Đặc biệt là khi giao dịch với các đối tượng literals.

Xem High Performance Ajax Application bản trình bày từ Yahoo.

3

Tôi nghĩ mình đã quá trễ để trả hai xu. Bổ sung shiplu.mokadd.im bộ nhớ trình duyệt câu trả lời là một hạn chế và phản hồi HTTP có thể có bất kỳ lượng dữ liệu nào theo thông số TCP.

Nhưng tôi có một ứng dụng sử dụng Google Chrome (phiên bản 29.0.xx) và máy chủ Jetty nơi phản hồi từ máy chủ Jetty có trọng tải lên đến 335MB. Trong khi trình duyệt đang nhận được phản hồi về kích thước tuyệt đối đó, Chrome dừng lại để lại thông báo "Thông báo IPC quá lớn". Mặc dù điều này dành riêng cho Google Chrome (không chắc chắn về các trình duyệt khác), nên có ngưỡng trên kích thước phản hồi tối đa.