Jelas AJAX meningkatkan antarmuka pengguna tetapi apakah ini juga mengurangi beban server? Anda akan berpikir itu terjadi karena seluruh halaman tidak harus dilayani setiap kali, tetapi mungkin ada variabel lain yang tidak saya pertimbangkan.
Jelas AJAX meningkatkan antarmuka pengguna tetapi apakah ini juga mengurangi beban server? Anda akan berpikir itu terjadi karena seluruh halaman tidak harus dilayani setiap kali, tetapi mungkin ada variabel lain yang tidak saya pertimbangkan.
Jawaban:
Itu tergantung pada apa yang Anda lakukan dan bagaimana Anda melakukannya.
Jika Anda mengganti beban halaman penuh dengan permintaan AJAX (yaitu hanya melakukan panggilan AJAX ketika pengguna mengklik apa yang seharusnya menjadi beban halaman penuh) maka AJAX akan mengurangi beban server karena Anda (mungkin) melakukan lebih sedikit pemrosesan dan mengembalikan lebih sedikit data.
Di sisi lain, jika Anda menambahkan pembaruan otomatis tipe AJAX yang melakukan polling server setiap beberapa detik maka itu dapat meningkatkan beban tergantung pada pengguna (itu mungkin tidak meningkatkan beban server jika pengguna terus menekan F5 untuk menyegarkan secara manual, tetapi kebanyakan orang biasanya tidak melakukannya selama berjam-jam)
Pengoptimalan AJAX lainnya adalah dengan hanya memuat lebih banyak data saat Anda menggulir. Dalam hal ini jika pengguna tidak menggulir sepenuhnya ke bawah, itu adalah proses yang sia-sia.
Tentu saja sebenarnya implementasi dapat membuat hasil menjadi miring, ini adalah hasil yang khas dengan asumsi implementasi yang cukup baik.
Tentu saja berfungsi untuk mengurangi beban server. Lihatlah presentasi ini @ jsconf'09 - untuk bagaimana Facebook menggunakan ajax untuk melakukan itu.
Ajax adalah async. komunikasi server - dan Anda dapat menggunakannya dalam berbagai cara. Orang-orang menggunakannya untuk memuat JSON sederhana ke Web waktu nyata, dan semua yang ada di antaranya.
Ingat - tantangan sebenarnya adalah keseimbangan antara klien dan server. Berusaha keras untuk membuat setiap pihak bekerja dengan baik sehingga sistemnya dioptimalkan dan Anda mendapatkan manfaat yang jelas dari Perceived Responsiveness dan Speed nyata.
Ada faktor-faktor lain yang tidak Anda pertimbangkan - dalam kebanyakan kasus, AJAX akan meningkatkan beban server. Dalam skenario tipikal, non-ajax, pengguna memuat satu halaman besar setiap beberapa detik atau beberapa menit. Ya, satu halaman itu lebih berfungsi untuk server, tetapi memiliki banyak waktu antara permintaan untuk memulihkan dan melayani permintaan lainnya. Dalam skenario AJAXified, pemuatan satu halaman sekarang menjadi lusinan hit kecil, terus-menerus memalu server dan menunggu tanggapan.
Ini seperti kematian dari 1000 luka - tidak ada permintaan yang sebesar itu, tapi berat totalnya adalah seorang pembunuh. Terutama ketika Anda mulai mempertimbangkan bahwa permintaan kecil ini hanya semahal untuk melayani permintaan satu halaman penuh. Dalam kedua kasus, Anda mungkin menjalankan seluruh saluran aplikasi web, memukul database dan menunggu jawaban sambil duduk di koneksi HTTP yang berharga.
Berikut adalah contoh bagaimana ajax bisa menjadi jelek di server dengan sangat cepat. Mari kita ambil "dasbor eksekutif" khas yang menampilkan 4 slot untuk widget. Katakanlah CEO menyukai laporan penjualan penuh di sisi kanan, daftar top 10 penerima di tengah dan laporan harga saham perusahaan di sebelah kanan. Dan katakanlah kita akan melakukan ini melalui permintaan remote ajax sederhana. Tanpa memperhitungkan lembar gaya akun, gambar, dan aset lainnya, halaman Anda sekarang membutuhkan 4 round trip HTTP (halaman utama, masing-masing laporan dasbor) terhadap server. Masing-masing membutuhkan tumpukan web lengkap untuk dieksekusi - Anda akan memukul database dan rendering HTML menggunakan kerangka kerja web Anda, kan? Sekarang gandakan CEO tunggal dengan 2000 pengguna jarak jauh beberapa di antaranya memiliki koneksi jerawatan.
Sebaliknya, Anda bisa memiliki satu halaman sisi server yang mengeksekusi dan mengembalikan kerangka HTML serta data (termasuk dalam JSON dalam-halaman) untuk menyajikan laporan. Koneksi tunggal, lebih besar tetapi lebih sedikit mengalahkan pada server web secara total karena Anda tidak menangani 4 permintaan dan memutar 4 pipa, dll.
Jika Anda menggunakan AJAX untuk menggantikan pekerjaan yang seharusnya dilakukan server maka ya itu akan meningkatkan kinerja server. Namun, Anda mungkin telah merancang hal-hal sehingga server masih melakukan hal yang sama dan sekarang apa pun yang terjadi dengan AJAX berada di atas apa yang sudah dilakukan server.
Sebagian besar ini tentang hal-hal UI, karena Anda tidak boleh melakukan hal lain di sisi klien. Pada dasarnya, apa pun yang dilakukan server untuk mendukung UI (mis. Memuat ulang halaman dengan tata letak yang berbeda sebagai respons terhadap input pengguna) lakukan dengan JavaScript sebagai gantinya.
Jika rendering HTML adalah bagian besar dari profil kinerja server aplikasi Anda, maka memindahkan rendering HTML ke klien dapat menjadi kemenangan kinerja pada server aplikasi.
Namun, jika rendering HTML adalah bagian kecil dari profil kinerja server aplikasi Anda, maka lebih banyak permintaan biasanya berarti lebih banyak perjalanan melalui tumpukan, lebih banyak permintaan, lebih banyak segalanya di server aplikasi, kehilangan kinerja.
Tentu saja, satu-satunya cara untuk mengetahui dalam kasus khusus Anda adalah dengan mencobanya.
Anda harus mempertimbangkan cara terbaik untuk mengimplementasikan solusi Anda. Bentuk sederhana yang tidak dinamis tidak perlu ajax dan menambahkannya sebenarnya dapat merusak kinerja. Jika masalah Anda adalah kueri buruk, semua pengoptimalan ajax di dunia tidak akan memberi Anda peningkatan kinerja yang dapat diterima.
Jika server Anda terlalu banyak bekerja, Anda perlu mencari tahu alasannya.
Jika Anda mendapatkan banyak hit maka ajax tidak akan memperbaiki masalah yang Anda butuhkan kapasitas lebih. Menambahkan ajax hanya akan meningkatkan jumlah permintaan yang harus ditangani server Anda.
Jika Anda memiliki halaman yang rumit, Anda harus melihat apakah ada yang bisa Anda lakukan di sisi klien untuk mengurangi beban di server Anda. Jika halaman Anda dinamis tetapi benar-benar memiliki cache paket data terbatas yang untuk penyesuaian sisi klien dapat membayar lebih baik.
Dan beberapa kali Ajax akan membantu. Ketika Anda memiliki formulir kompleks dengan data dinamis, ajax menang. Tetapi jika pertanyaan Anda rumit dan membutuhkan waktu lama untuk dijalankan, ajax tetap tidak akan menyelesaikan masalah Anda.