Pikirkan Kembali Antarmuka
Pertama, desain antarmuka pengguna yang menunjukkan 50-100k baris pada klien mungkin bukan antarmuka pengguna terbaik. Tidak hanya sejumlah besar data untuk dikirim ke klien dan untuk dikelola oleh klien dan mungkin tidak praktis di beberapa perangkat seluler, tetapi ini jelas jauh lebih banyak baris daripada yang akan benar-benar dibaca oleh pengguna tunggal dalam interaksi apa pun dengan halaman. Jadi, urutan pertama mungkin memikirkan kembali desain antarmuka pengguna dan membuat semacam antarmuka yang lebih didorong oleh permintaan (halaman, gulir virtual, dikunci dengan huruf, dll ...). Ada banyak kemungkinan berbeda untuk desain antarmuka pengguna yang berbeda (dan semoga lebih baik) yang mengurangi jumlah transfer data. Desain mana yang terbaik bergantung sepenuhnya pada data dan kemungkinan model penggunaan oleh pengguna.
Kirim Data dalam Potongan
Yang mengatakan, jika Anda akan mentransfer data sebanyak itu ke klien, maka Anda mungkin ingin mengirimkannya dalam potongan (grup baris pada satu waktu). Gagasan dengan potongan adalah Anda mengirim sejumlah data yang dapat dikonsumsi dalam satu potongan sehingga klien dapat menguraikannya, memprosesnya, menunjukkan hasilnya, dan kemudian siap untuk potongan berikutnya. Klien dapat tetap aktif sepanjang waktu karena memiliki siklus yang tersedia di antara potongan untuk memproses peristiwa pengguna lainnya. Namun, mengirimkannya dalam potongan mengurangi biaya pengiriman pesan terpisah untuk setiap baris. Jika server Anda menggunakan kompresi, maka potongan juga memberikan peluang lebih besar untuk efisiensi kompresi. Seberapa besar seharusnya (misalnya, berapa banyak baris data yang harus berisi) tergantung pada banyak faktor dan kemungkinan besar ditentukan melalui eksperimen dengan kemungkinan klien atau kekuatan terendah yang diharapkan klien. Misalnya, Anda mungkin ingin mengirim 100 baris per pesan.
Gunakan Format Transfer yang Efisien untuk Data
Dan, jika Anda menggunakan socket.io untuk mentransfer data dalam jumlah besar, Anda mungkin ingin meninjau kembali cara Anda menggunakan format JSON. Misalnya, mengirim 100.000 objek yang semuanya mengulang nama properti yang sama persis sangat tidak efisien. Anda sering dapat menemukan pengoptimalan Anda sendiri yang menghindari pengulangan nama properti yang persis sama di setiap objek. Misalnya, daripada mengirim 100.000 ini:
{"firstname": "John", "lastname": "Bundy", "state": "Az", "country": "US"}
jika setiap objek memiliki properti yang sama persis, maka Anda dapat mengkodekan nama properti ke dalam kode Anda sendiri atau mengirim nama properti sekali dan kemudian hanya mengirim daftar nilai yang dipisahkan koma dalam array yang kode penerima dapat dimasukkan ke dalam objek dengan nama properti yang sesuai:
["John", "Bundy", "Az", "US"]
Ukuran data terkadang dapat dikurangi 2-3x hanya dengan menghapus informasi yang berlebihan.