Mengapa tidak AJAX'ify seluruh situs web?

11

Apakah ada alasan kuat mengapa situs tidak boleh dikembangkan dengan fungsi ajax yang memuat bagian utama dari setiap bagian (dengan asumsi ada elemen seperti header, navigasi dll yang tetap sama)?

Tentunya itu akan menjadi kurang intensif sumber daya karena server tidak perlu menyajikan konten yang muncul di setiap halaman, menguntungkan tuan rumah dan pengguna akhir.

Jawab pertanyaan dengan mempertimbangkan:

  • Perilaku javascript situs menurun anggun dalam setiap contoh

  • Untuk pertanyaan saya, saya sedang berbicara tentang situs-situs baru di mana perilaku ini dapat diimplementasikan daripada mati, sehingga secara teknis tidak memerlukan biaya apa pun - kami tidak kembali ke produk jadi untuk menerapkannya.

Anonim
sumber
1
gmail adalah contoh "situs web" yang hampir sepenuhnya AJAX. Situs web AJAX sepenuhnya ternyata berfungsi lebih baik untuk aplikasi web daripada situs web tradisional.
Lie Ryan
1
it doesn't technically cost any moneykecuali itu. Untuk memiliki AJAXified yang sebanding dengan pengalaman penelusuran biasa, Anda harus menerapkan kembali fitur bawaan browser yang tersedia secara otomatis dengan situs biasa, seperti tombol kembali, riwayat browser, caching, dll. Paling tidak, Anda harus saya harus menerapkan kembali fungsionalitas hyperlink dari penangan peristiwa klik (termasuk: dikunjungi dan: penanda aktif).
Lie Ryan
Jika Anda ingin situs Ajax berfungsi seperti situs non-Ajax, Anda harus meniru fungsi yang ada. Tapi itu seperti meminta Superman untuk berjalan daripada terbang. Jika Anda bisa terbang, berjalan tidak ada gunanya.
Evik James

Jawaban:

6

Jika konten dapat dijangkau tanpa JavaScript diaktifkan maka pertanyaan Anda tidak masuk akal. Ini bukan "sepenuhnya Ajaxified" jika Anda bisa mendapatkan konten melalui cara lain. Sungguh, yang Anda tanyakan adalah, "tidak apa-apa untuk meningkatkan pengalaman pengguna saya melalui Ajax?". Jawabannya jelas "ya".

sunting

Kembali ketika Google keluar dengan proposal Ajax yang dapat dijelajahi, itu digeser sebagai ide yang sangat buruk . Membuat bacaan yang menarik.

John Conde
sumber
Sangat benar ... duh momen. Lol. Adakah alasan mengapa banyak situs web utama tidak meningkatkan pengalaman pengguna melalui pengiriman konten tanpa batas?
Anonim
Dari atas kepala saya, saya akan mengatakan biayanya (butuh lebih banyak kode untuk meningkatkan situs dengan JavaScript, biaya / manfaat menjadi terlalu kecil untuk membenarkannya), waktu, peningkatan pemeliharaan terkait dengan lebih banyak kode / lapisan se aplikasi terutama ketika Anda memasukkan ponsel ke dalamnya.
John Conde
Memberi +1 untuk tautan "ide yang sangat buruk" dan kisah peringatannya tentang bahaya ekstrem situs web sepenuhnya AJAX.
joshuahedlund
4

Hal pertama yang pertama

Pro

  • AJAX dapat memungkinkan Anda untuk menggunakan halaman "basis" yang umum dan hanya memuat area konten, yang dapat mengurangi waktu buka bagi pengguna, karena sebagian besar halaman sudah dimuat.
  • Dapat memungkinkan beberapa eye candy seperti memudar area konten masuk dan keluar.

Kontra

  • Tidak bermain bagus jika halaman diunduh.
  • Dapat mengacaukan perangkat cacat.
  • Pemirsa dengan javascript dimatikan tidak akan dapat menggunakan konten sama sekali kecuali jika versi non-javascript digunakan.
  • Lebih banyak pekerjaan (apakah itu benar-benar perlu dikatakan?).

Sekarang untuk pertanyaan Anda

Dengan asumsi situs Anda terdegradasi dengan anggun untuk yang tanpa Javascript, seberapa baik hasilnya tergantung pada bagaimana hal itu dilakukan. Misalnya, jika Anda hanya menampilkan tautan ke versi non-javascript secara tiba-tiba, ini merupakan ketidaknyamanan bagi pemirsa tersebut untuk mengklik tautan lain. Di sisi lain, jika ada "halaman utama" noscript yang akan menggunakan tautan tradisional, yang berfungsi lebih baik untuk sebagian besar pengguna, tetapi masih kurang dukungan bagi mereka yang menggunakan perangkat cacat, contoh di mana pengguna datang untuk "halaman" tertentu dari tautan, dll.

Semua dalam semua, di dunia koneksi web yang semakin cepat, itu tidak benar-benar membenarkan memotong sejumlah kecil filesize (kami akan menganggap semua Javascript itu sendiri, CSS, dan gambar dapat dan akan di-cache, meninggalkan hanya halaman "base" itu sendiri untuk menyimpan byte pada) untuk kontra yang dapat diberikannya, yaitu kesulitan ekstra (meskipun itu tidak selalu merupakan tantangan yang baik) dan kurangnya dukungan yang dapat diberikan untuk beberapa pengguna.

Semua dalam semua, saya akan mengatakan itu terserah Anda, mungkin akan berhasil cukup baik, dan untuk sebagian besar pengguna, mereka mungkin akan melihat situs sebagaimana dimaksud, tetapi secara pribadi, saya akan mengatakan tidak repot-repot, karena tidak sepadan dengan masalah untuk perbaikan kecil untuk filesize.

Mike
sumber
3

Lihat http://gawker.com/ - situs ini hampir sepenuhnya memuat setelah fakta. Mereka menggunakan "hashbangs" ( http://mydomain.com/#!some_section) untuk menentukan halaman konten mana yang harus dimuat, navigasi utama tetap statis.

Lihatlah http://mtrpcic.net/2011/02/fragment-uris-theyre-not-as-bad-as-you-think-really/ untuk tutorial singkat tentang konsep yang digunakan Gawker.

Ada pro dan kontra, Anda harus mempertimbangkan mesin pencari (lihat http://code.google.com/web/ajaxcrawling/docs/getting-started.html ), orang-orang dengan javascript dinonaktifkan, dan melakukan banyak pengujian.

Dengan semua yang dikatakan, argumen terbesar terhadap mereka mungkin adalah bahwa ketika pengguna menunggu halaman untuk memuat, kemudian harus menunggu lebih banyak memuat, mereka mungkin tidak sabar. Dalam pandangan saya, praktik terbaik adalah memuat situs utama, navigasi, dan konten utama dalam satu pass (berdasarkan permintaan), dan menyimpan AJAX untuk hal-hal tak penting yang tidak penting. Itu bekerja dengan ide peningkatan progresif , dan menggabungkan yang terbaik dari kedua pendekatan.

Chris
sumber
1

Karena itu mungkin tidak perlu.
Memuat dokumen HTML dasar itu sederhana dan berfungsi. Memperkenalkan Ajax menambahkan seluruh lapisan proses lain untuk browser, kode, dan pemeliharaan untuk Javascript, back end stuff, URL hashbang aneh, dan sebagainya. Terkadang ini bisa dibenarkan, kadang tidak. Mungkin menghemat beberapa sumber daya server (mungkin), tetapi apakah itu cukup untuk mengimbangi pemeliharaan? Anda harus mengevaluasi per proyek tersebut.

Sebagai contoh, ketika Twitter mendapatkan desain ulang terbarunya, mereka mengambil pendekatan bahwa itu bukan hanya situs (halaman) web, tetapi sebuah aplikasi, dan semuanya sangat berbasis Ajax, meskipun sebagian besar dari apa yang dilakukannya bisa ditangani dengan permintaan halaman reguler. Salah satu masalah terbesar, yang masih terjadi sekarang meskipun jauh lebih sedikit, adalah tiba di sana dan disambut dengan halaman kosong karena sesuatu di Ajax gagal.

Su '
sumber
1
Apakah Anda menyarankan agar Facebook atau GMail dapat dilakukan tanpa Ajax? Mereka akan seperti surat web awal dan MySpace.
Evik James
Untuk Kegagalan Ajax, seorang programmer yang baik dapat menulis deteksi untuk peristiwa tersebut. Ini bisa berupa permintaan untuk mencoba kembali permintaan atau hanya menampilkan sesuatu yang salah.
Jomar Sevillejo
0

Dalam praktiknya, banyak pekerjaan menghasilkan situs web 'sepenuhnya AJAX', terutama untuk situs web besar yang sangat rumit. Beberapa situs web yang mencoba ini adalah Google dan Facebook, tetapi bahkan mereka tidak melakukannya dengan sempurna.

Masalah umum adalah navigasi (yaitu, maju dan mundur), dan bookmark, tetapi ada banyak bug lain yang banyak pengembang tidak ingin berurusan dengan. Dan itu pada dasarnya berarti membuat dua versi situs web agar kompatibel dengan pengguna Javascript dan non-javascript (dan perbaikan untuk semua browser dengan dukungan AJAX yang buruk).

Mat
sumber
Saya pikir konsep "maju dan mundur" sudah ditinggalkan. Orang-orang mengetahui bahwa web mengalir seperti sungai dan tidak seperti buku yang nyata.
Evik James
0

Ya itu seharusnya, namun harus sebaliknya.

Bagian umum halaman harus dikirim melalui HTTP. Kemudian kontrol ajax kecil (atau bahkan lebih baik websockets) memuat konten dinamis secara tidak sinkron.

Tentu saja Anda harus terlebih dahulu mendeteksi apakah javascript diaktifkan (oleh cookie) dan hanya menggunakan metode ini jika diaktifkan.

Jadi Anda memerlukan rute HTTP penuh normal dan kemudian rute websockets. Ini membutuhkan duplikasi kode kecuali jika Anda menggunakan alat seperti node.js

Kebanyakan orang "berpikir" bahwa itu tidak sepadan dengan usaha ekstra. Dan terkadang tidak.

Sebagai samping banyak orang membuat halaman salah. Mereka benar-benar memutuskan bahwa Anda tidak memerlukan versi non-javascript dan Anda membutuhkan semua url hash bang yang aneh ini dan tombol forward / back yang rusak. Melakukan ajax dengan benar membutuhkan riwayat HTML5 (IE9 tidak memilikinya). Pengembang juga perlu melengkapi versi situs web Anda.

Raynos
sumber
0

Karena Anda menyatakan bahwa itu akan menurunkan anggun untuk pengunjung dengan Javascript dinonaktifkan, saya hanya dapat melihat dua masalah nyata (dan satu kemungkinan masalah) yang mungkin muncul.

Buruk Untuk Aksesibilitas

Pembaca layar dan teknologi bantuan lainnya sering terlempar oleh perubahan DOM dinamis. Mereka memproses & membaca halaman secara linear, dan mengubah konten halaman setelah dimuat mungkin tidak ditangani dengan benar.

Mungkin ada teknik untuk menyiasatinya, tapi saya belum melihatnya secara menyeluruh.

Kompleksitas Meningkat

Mempertahankan situs semacam ini bisa sulit. Sebagai contoh: Jika Anda membuat tata letak baru dan mengubah ID area konten yang Anda ganti dengan tautan AJAX Anda, itu bisa mematahkan skema navigasi Anda dengan cara yang cukup membingungkan.

Perilaku AJAX semacam ini juga akan menyulitkan analisis lalu lintas apa pun yang mungkin Anda lakukan; Google Analytics tidak akan mendaftarkan dengan benar beban AJAX ini tanpa panggilan manual pageTracker._trackPageview('this_page');.

Menambahkan lebih banyak kerumitan pada bagaimana halaman Anda beroperasi juga meningkatkan bilah untuk pengembang baru; siapa pun yang bekerja di situs ini mungkin harus diberi tahu tentang bagaimana perilaku ini mempengaruhi pemuatan halaman.

Kemungkinan: Muat Laman Lebih Lambat pada Kunjungan Awal

Bergantung pada bagaimana Anda menyusun berbagai hal, halaman ini yang mengambil kode AJAX hanya akan dapat masuk setelah dokumen dimuat sepenuhnya. Jadi, hanya setelah pengunjung Anda mengunduh seluruh halaman, dan kemudian Javascript (jika itu file eksternal), dan browser mereka merendernya dan mengambil konten melalui AJAX, mereka akan melihat konten halaman.

Setiap tautan berikutnya yang diklik akan lebih cepat, tetapi mengambil halaman pertama yang dikunjungi pengguna sebenarnya akan lebih lama daripada versi statis.

Alasan saya memberi label ini sebagai masalah yang mungkin terjadi adalah Anda selalu dapat mengirim halaman pertama secara statis (karena Anda sudah memiliki versi statis sebagai cadangan) dan kemudian menggunakan AJAX untuk tautan selanjutnya.


Untuk apa nilainya, ini tidak terdengar seperti ide yang buruk bagi saya - terutama untuk penggunaan bandwidth-sensitif seperti halaman ponsel. Anda harus hati-hati menimbang kelemahan untuk memastikan itu layak untuk Anda.

Jacob Hume
sumber
0

Memiliki elemen ajax pada halaman baik-baik saja ketika Anda memiliki basis pengguna yang kecil, tetapi ketika Anda memiliki lebih banyak lalu lintas; Anda ingin menggunakan pendekatan yang lebih statis untuk mengurangi penyalahgunaan sumber daya.

Misalnya: Anda memiliki 200 orang yang mencoba mengakses halaman per detik. Anda memiliki sekitar 7 permintaan basis data untuk panggilan ajax Anda; itu adalah 1400 panggilan basis data per detik, yang dapat menghambat situs web.

Situs web yang perlu dirancang untuk lalu lintas yang lebih tinggi harus memiliki halaman yang menghadap ke luar statis, untuk konten yang dapat ditampilkan secara statis. Ini dicapai dengan menggunakan skrip sisi server yang berjalan setiap detik untuk membangun kembali halaman statis, yang diambil untuk pengguna akhir, dan dengan demikian Anda telah mengurangi beban Anda dari 1.400 panggilan basis data detik menjadi 7.

Ini adalah pendekatan SOA untuk membangun situs web.

Paul
sumber
1
Menggunakan AJAX tidak berarti Anda harus tiba-tiba mengabaikan caching. Dengan cara yang sama Anda dapat men-cache seluruh halaman, Anda dapat men-cache bagian dari halaman yang Anda muat dengan Javascript
DisgruntledGoat
@ DisgruntledGoat Saya tidak pernah mengatakan bahwa Anda tidak dapat menggunakan AJAX, dan pertanyaan ini bukan tentang menggunakan AJAX atau tidak; ini tentang mengapa Anda mungkin tidak ingin menggunakan AJAX untuk semuanya pada halaman. Saya telah memperbarui jawaban saya untuk mencerminkan apa yang saya maksud dengan konten statis.
Paul