Skip to content

May 8, 2009

1

Problem Cache AJAX di IE

Ada sebuah contoh kasus, dimana kita harus menyajikan data dari suatu tabel yang di ambil dengan AJAX. Rencananya isi data ini akan refresh setiap 5 menit, jadi terlihat menunjukan data secara realtime. Namun apa yang terjadi, bila ternyata data di tabel tampilan tidak refresh dan tidak sesuai dengan yang kita harapkan dengan kata lain data yang ditampilkan masih data yang lama.

Namun apabila jika kita ambil url yang mengambil data tersebut di table database, dari fungsi AJAX, misalkan saja getdata.php, dan kita letakan dalam address bar browser, maka yang ditampilkan adalah data yang terbaru, sesuai yang kita harapkan.

Dari hasil cari2 di google, dapat kesimpulan kalo Internet Explorer (IE) menyimpan cache request dari AJAX. Jadi jika kita melakukan request AJAX dengan url yang sama, maka akan menghasilkan output yang sama dengan yang pertama kali dilakukan.

Untuk mengatasi permasalahan ini, bisa dilakukan sedikit perubahan, dengan menambahkan nomor acak di dalam URL, dan ini ternyata BERHASIL.

Dibawah ini ada sedikit contoh query AJAX.

 var url = "GetData.jsp?requestNo=" + req;
    xhr.open("GET", url, true);
    xhr.onreadystatechange = handleHttpResponse;
    xhr.send(null);

Dirubah menjadi :

   var url = "GetData.jsp?requestNo=" + req  + "&random=" + Math.random();
   xhr.open("GET", url, true);
   xhr.onreadystatechange = handleHttpResponse;
   xhr.send(null);

Terlihat, ada penambahan satu parameter lagi di URL yang namanya random dan berisi Math.random(). Metode ini memastikan URL yang dipanggil adalah unil dan mengatasi permasalahan cache.