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.
it doesn't technically cost any money
kecuali 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).Jawaban:
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.
sumber
Hal pertama yang pertama
Pro
Kontra
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.
sumber
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.
sumber
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.
sumber
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).
sumber
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.
sumber
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.
sumber
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.
sumber