Buat Ajax Cacheable

Advertisement
Salah satu manfaat yang dikutip dari Ajax adalah bahwa ia menyediakan umpan balik instan kepada pengguna karena permintaan informasi asynchronously dari web server backend. Namun, dengan menggunakan Ajax ada jaminan bahwa pengguna tidak akan memutar-mutar ibu jari menunggu orang JavaScript dan XML tanggapan asynchronous untuk kembali. Dalam banyak aplikasi, apakah atau tidak pengguna disimpan menunggu tergantung pada seberapa Ajax digunakan. Misalnya, dalam klien email berbasis web pengguna akan terus menunggu hasil dari permintaan Ajax untuk menemukan semua pesan email yang sesuai dengan kriteria pencarian mereka. Sangat penting untuk diingat bahwa "asynchronous" tidak berarti "seketika".

Untuk meningkatkan kinerja, penting untuk mengoptimalkan tanggapan Ajax ini. Cara yang paling penting untuk meningkatkan kinerja Ajax adalah untuk membuat tanggapan disimpan di cache, seperti dibahas dalam Tambah sebuah Habis atau Cache-Control header . Beberapa aturan lain juga berlaku untuk Ajax:
Gzip Komponen
Mengurangi DNS lookup
Mengecilkan JavaScript
Hindari Redirects
Konfigurasi ETags

Mari kita lihat sebuah contoh. Sebuah Web 2.0 email client mungkin menggunakan Ajax untuk men-download buku alamat pengguna untuk autocompletion. Jika pengguna belum diubah buku alamat nya sejak terakhir kali dia menggunakan aplikasi web email, respon buku alamat sebelumnya dapat dibaca dari cache jika respon Ajax dibuat disimpan di cache dengan masa depan Habis atau sundulan Cache-Control. Browser harus diberitahu kapan harus menggunakan cache sebelumnya respon buku alamat dibandingkan meminta yang baru. Hal ini dapat dilakukan dengan menambahkan timestamp ke buku alamat URL Ajax menunjukkan waktu terakhir pengguna diubah buku alamat nya, misalnya, & t = 1190241612 . Jika buku alamat belum dimodifikasi sejak download terakhir, timestamp akan sama dan buku alamat akan dibaca dari cache browser menghilangkan HTTP jemput ekstra. Jika pengguna telah diubah buku alamat nya, timestamp memastikan URL baru tidak sesuai dengan respon cache, dan browser akan meminta entri buku alamat diperbarui.

Meskipun tanggapan Ajax Anda dibuat secara dinamis, dan mungkin hanya berlaku untuk satu pengguna, mereka masih dapat di-cache. Melakukan hal ini akan membuat Anda Web 2.0 aplikasi lebih cepat.

Siram Buffer Dini

Ketika pengguna meminta halaman, itu bisa berlangsung dari 200 sampai 500ms untuk server backend untuk menjahit bersama halaman HTML. Selama waktu ini, browser idle karena menunggu data tiba. Dalam PHP Anda memiliki fungsi flush () . Hal ini memungkinkan Anda untuk mengirim respon HTML parsial siap Anda ke browser sehingga browser dapat mulai mengambil komponen sementara backend Anda sibuk dengan sisa halaman HTML. Manfaat ini terutama terlihat pada backends sibuk atau frontends cahaya.
Tempat yang baik untuk mempertimbangkan pembilasan tepat setelah KEPALA karena HTML untuk kepala biasanya lebih mudah untuk memproduksi dan memungkinkan Anda untuk menyertakan CSS dan file JavaScript untuk browser untuk mulai mengambil secara paralel sementara backend masih memproses.
Contoh:
      ... <-! - Css, js>
    </ head> <? php flush ();>
    <body>
      <! - konten -> ...
 

Yahoo! pencarian memelopori penelitian dan pengujian pengguna nyata untuk membuktikan manfaat menggunakan teknik ini.
puncak

Gunakan GET untuk AJAX Permintaan

The Yahoo! Mail tim menemukan bahwa ketika menggunakan XMLHttpRequest , POST diimplementasikan dalam browser sebagai proses dua langkah: mengirim header pertama, kemudian mengirimkan data. Jadi yang terbaik untuk menggunakan GET, yang hanya membutuhkan waktu satu paket TCP untuk mengirimkan (kecuali jika Anda memiliki banyak cookie). Panjang maksimum URL di IE adalah 2K, jadi jika Anda mengirim data lebih dari 2K Anda mungkin tidak dapat menggunakan GET.
Sebuah sisi menarik mempengaruhi adalah bahwa POST tanpa benar-benar mem-posting data apapun berperilaku seperti GET. Berdasarkan spesifikasi HTTP , GET dimaksudkan untuk mengambil informasi, sehingga masuk akal (semantik) untuk menggunakan GET ketika Anda hanya meminta data, sebagai lawan mengirim data yang akan disimpan server-side.
puncak