2011-10-08 31 views
6

Khi nhận được danh sách các mục qua cuộc gọi json, tốt hơn là sử dụng một số cuộc gọi nhỏ (để nhận thông tin khi cần) hoặc một cuộc gọi lớn với tất cả dữ liệu.Cần thu thập bao nhiêu dữ liệu JSON gọi?

Ví dụ: bạn có cuộc gọi json để nhận danh sách sách phù hợp với từ khóa tiêu đề cụ thể. Có 100 kết quả. Bạn đang hiển thị dữ liệu ở dạng được phân trang - 10 kết quả cho mỗi 'trang'. Có hiệu quả hơn khi thực hiện một cuộc gọi và nhận tất cả kết quả hoặc thực hiện cuộc gọi cho 10 cuộc gọi tiếp theo trên mỗi trang không?

Tôi sẽ tưởng tượng nó được xác định một phần bởi số lượng kết quả có. Nếu đó là một số lượng lớn, tùy chọn thứ hai có vẻ rõ ràng. Nhưng giới hạn tốt cho số bạn có thể nhận được trong một cuộc gọi - 100, 1000, 10.000 mục là gì?

Trả lời

0

Điều đó tùy thuộc.

Rõ ràng, bạn muốn giữ mức sử dụng băng thông ở mức tối thiểu, nhưng cũng có phí trên mỗi cuộc gọi riêng lẻ. Bạn sẽ phải thực hiện một số dự đoán được giáo dục, quan trọng nhất: khả năng bạn sẽ cần dữ liệu từ trang 2 đến 100 là bao nhiêu?

Nếu rất có khả năng (nói, trong 90% trường hợp người dùng sẽ nhấp qua nhiều trang của cùng một tập kết quả), thì tôi sẽ tải xuống toàn bộ kết quả trong một lần, nhưng nếu không, tôi ' d tải các trang riêng lẻ khi bạn đi.

Một điều khác cần lưu ý là độ trễ. Mọi cuộc gọi ajax đều có độ trễ nhất định, tùy thuộc vào khoảng cách (trong cấu trúc liên kết mạng, không nhất thiết là địa lý) giữa máy khách và máy chủ. Đối với lần tải đầu tiên, độ trễ là không thể tránh khỏi, nhưng sau đó, bạn cần tự hỏi liệu phản hồi nhanh có quan trọng hay không. Trong trường hợp bình thường, nó được mong đợi và chấp nhận được, nhưng nếu trường hợp sử dụng điển hình của bạn liên quan đến việc lật qua lại giữa các trang, thì nó có thể trở thành mối phiền toái và bạn có thể cân nhắc mua snappiness cho thời gian tải ban đầu dài hơn.

Nếu bạn muốn tải nhiều trang, nhưng tập hợp kết quả quá lớn (ví dụ, hàng nghìn hoặc hàng triệu trang), bạn có thể nghĩ về các sơ đồ phức tạp hơn, ví dụ: tải trang được yêu cầu và 10 trang tiếp theo hoặc tải xuống trang được yêu cầu ngay lập tức và sau đó tìm nạp trước 10 trang tiếp theo trong nền.

1

Nói chung, mỗi cuộc gọi ajax có overhead và giảm số lượng cuộc gọi khác nhau làm cho hiệu suất tốt hơn .. trừ khi dữ liệu quá lớn ...

Trong paging nó thường tốt hơn không phải là để lấy tất cả dữ liệu từ bắt đầu vì thường người dùng không di chuyển qua tất cả các trang .. để bạn có thể giảm tải trên máy chủ bằng cách không di chuyển dữ liệu .... trên một mặt khác, nếu dữ liệu tương đối nhỏ hoặc bạn tin rằng người dùng sẽ cần phải xem tất cả dữ liệu, tìm nạp chúng để tiết kiệm chi phí cho các cuộc gọi khác nhau ...

Các vấn đề liên quan