Suy nghĩ lại về giao diện
Trước hết, thiết kế giao diện người dùng hiển thị 50-100 nghìn hàng trên máy khách có lẽ không phải là giao diện người dùng tốt nhất ngay từ đầu. Không chỉ là một lượng lớn dữ liệu để gửi cho khách hàng và để khách hàng quản lý và có lẽ là không thực tế trong một số thiết bị di động, nhưng rõ ràng đó là cách nhiều hàng hơn bất kỳ người dùng đơn lẻ nào sẽ thực sự đọc trong bất kỳ tương tác nhất định nào với trang. Vì vậy, đơn đặt hàng đầu tiên có thể là suy nghĩ lại về thiết kế giao diện người dùng và tạo một số loại giao diện theo nhu cầu hơn (phân trang, cuộn ảo, được khóa bằng chữ cái, v.v.). Có rất nhiều khả năng khác nhau cho một thiết kế giao diện người dùng khác (và hy vọng là tốt hơn) để giảm lượng truyền dữ liệu. Thiết kế nào sẽ là tốt nhất hoàn toàn phụ thuộc vào dữ liệu và các mô hình sử dụng có thể có của người dùng.
Gửi dữ liệu dưới dạng chun
Điều đó nói lên rằng, nếu bạn định chuyển nhiều dữ liệu đó đến máy khách, thì có thể bạn sẽ muốn gửi nó theo từng phần (nhóm hàng tại một thời điểm). Ý tưởng với phân đoạn là bạn gửi một lượng dữ liệu tiêu hao trong một đoạn để khách hàng có thể phân tích cú pháp, xử lý, hiển thị kết quả và sau đó sẵn sàng cho đoạn tiếp theo. Máy khách có thể duy trì hoạt động suốt thời gian vì nó có sẵn các chu kỳ giữa các phần để xử lý các sự kiện người dùng khác. Tuy nhiên, việc gửi nó thành nhiều đoạn sẽ giảm chi phí gửi một tin nhắn riêng biệt cho từng hàng đơn lẻ. Nếu máy chủ của bạn đang sử dụng tính năng nén, thì các khối cũng mang lại cơ hội lớn hơn cho hiệu quả nén. Mức độ lớn của một đoạn (ví dụ:nên chứa bao nhiêu hàng dữ liệu) phụ thuộc vào một loạt các yếu tố và có khả năng được xác định tốt nhất thông qua thử nghiệm với khách hàng tiềm năng hoặc khách hàng mong đợi có quyền lực thấp nhất. Ví dụ:bạn có thể muốn gửi 100 hàng cho mỗi tin nhắn.
Sử dụng định dạng truyền dữ liệu hiệu quả
Và, nếu bạn đang sử dụng socket.io để truyền một lượng lớn dữ liệu, bạn có thể muốn xem lại cách bạn sử dụng định dạng JSON. Ví dụ:gửi 100.000 đối tượng mà tất cả đều lặp lại chính xác các tên thuộc tính giống nhau thì không hiệu quả lắm. Bạn thường có thể phát minh ra các tối ưu hóa của riêng mình để tránh lặp lại các tên thuộc tính hoàn toàn giống nhau trong mọi đối tượng. Ví dụ:thay vì gửi 100.000 trong số này:
{"firstname": "John", "lastname": "Bundy", "state": "Az", "country": "US"}
nếu mọi đối tượng đều có các thuộc tính giống hệt nhau, thì bạn có thể mã các tên thuộc tính thành mã của riêng mình hoặc gửi các tên thuộc tính một lần và sau đó chỉ cần gửi danh sách các giá trị được phân tách bằng dấu phẩy trong một mảng mà mã nhận có thể đưa vào một đối tượng với các tên thuộc tính thích hợp:
["John", "Bundy", "Az", "US"]
Kích thước dữ liệu đôi khi có thể giảm 2-3 lần chỉ bằng cách xóa thông tin thừa.