Aplikasi web yang dirancang dengan komponen kecil yang sangat modular (dalam hal ini menggunakan arahan AngularJS tetapi bisa dengan mudah menjadi komponen Web, komponen ReactJS, atau teknologi lainnya). Komponen sering kali memiliki panggilan REST API yang tidak sinkron, saat inisialisasi atau saat interaksi pengguna. Desain ini menyebabkan banyak panggilan API per halaman (terkadang 20+). Apakah ada masalah dengan desain ini? Beberapa menyarankan kami memadatkan panggilan API ke layanan sisi klien yang lebih besar yang bertindak sebagai lajang. Jadi 10 panggilan API dapat dikurangi menjadi 1, meskipun satu halaman hanya dapat menggunakan sebagian dari data itu. Apakah ada tanda bahaya, atau ada masalah dengan desain ini? Yang mana yang lebih disukai?
8
Jawaban:
Browser membatasi jumlah total permintaan bersamaan
/programming/561046
Jadi ya, ada masalah dengan desain ini. Namun saya pikir tanggapan yang diterima adalah pindah ke implementasi soket web di mana Anda menggunakan koneksi tunggal, tetapi dengan banyak jenis pesan untuk berkomunikasi dengan server
sumber
Seharusnya tidak ada. Fakta bahwa setiap permintaan kecil dan async berarti Anda dapat sangat mempercepat aplikasi web Anda, daripada harus menunggu satu permintaan besar untuk menyelesaikan yang memblokir semuanya.
Pastikan javascript Anda benar-benar tidak sinkron dan dapat melakukan hal-hal sementara permintaan Anda yang lain menunggu dan Anda akan berakhir dengan aplikasi yang jauh lebih baik daripada jika Anda memiliki satu permintaan besar yang mengambil semuanya.
Setelah semua browser dirancang untuk menangani pemuatan banyak URL secara bersamaan, bahkan halaman web standar yang khas mungkin memiliki puluhan atau bahkan ratusan permintaan untuk gambar, css, javascript, iframe, dll.
sumber
Jangan lupa ukuran setiap permintaan jaringan. Secara umum, jika setiap permintaan hanya mengembalikan seperti 2 KB data, maka permintaan jaringan mahal untuk sejumlah kecil data.
Jika permintaan jaringan mencapai 400KB, maka bagi menjadi dua. Tetapi secara umum, tidak cukup data untuk satu permintaan jaringan lebih sering menjadi masalah.
sumber
Beberapa pertimbangan di sini:
Performa
Jika Anda melihat kinerja yang dapat diterima, Anda tidak perlu terlalu khawatir tentang hal itu. Jika Anda dapat mengelola untuk menjalankan HTTP2 Anda akan melihat peningkatan kinerja. [1] .
Rancangan
Seperti halnya desain apa pun, tidak ada aturan cepat tentang apakah Anda harus melakukan banyak permintaan kecil atau beberapa permintaan besar. Beberapa hal yang perlu dipertimbangkan:
Apakah banyak panggilan yang saling tergantung? Jika Anda memiliki hubungan ketergantungan yang kompleks antara panggilan yang berbeda, hal itu dapat membuat pemeliharaan menjadi lebih sulit.
Apakah komponen yang berbeda memiliki banyak data yang sama? Jika demikian, Anda dapat memiliki titik pusat yang melakukan panggilan bersama dan memungkinkan komponen mengakses data bersama.
Mengawasi beban pemeliharaan komponen kecil yang melakukan panggilan terpisah. Anda akan tahu ketika itu menjadi sulit untuk dikelola dan kemudian perubahan mungkin diperlukan. Mengubah desain berdasarkan kebutuhan hipotetis di masa depan dapat menyebabkan kesalahan desain, karena Anda harus secara akurat mengantisipasi masalah apa yang akan Anda miliki di masa depan. Jika itu berfungsi dengan baik sekarang, mengubahnya juga tidak perlu.
1: "HTTP / 2 sepenuhnya multiplexing memungkinkan beberapa file dan permintaan untuk ditransfer pada saat yang sama, yang bertentangan dengan HTTP1.x yang hanya menerima satu permintaan / koneksi tunggal pada suatu waktu. HTTP / 2 menggunakan koneksi yang sama untuk mentransfer berbagai file dan permintaan, menghindari operasi besar membuka koneksi baru untuk setiap file yang perlu ditransfer antara klien dan server. " - https://css-tricks.com/http2-real-world-performance-test-analysis/
sumber