ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 
Ajax Cache php แก้ปัญหา cache ของ Brwoser ทำให้ Ajax ของเราไม่ได้ข้อมูลที่สดใหม่
หมายท่านลงมีปัญหา กับการใช้ Ajax คู่กับ php เช่นการดึงข้อมูลจากฐานข้อมูลออกมาแสดงด้วย Ajax แต่บ้างครั้งเจอปัญหา ข้อมูลที่เพิ่งเพิ่มเข้าไปในฐานข้อมูลแต่ พอดึงข้อมูลออกมาแสดง กลับไม่ได้ค่าที่ใหม่ ที่สุด
ทั้งๆที่ กำหนด no-cache ที่ header ใน php หรือที่ Javascript แล้วก็ตาม
เช่น
Ajaxpage.html? ---> สั่งไม่ให้เก็บ cache
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="0">

Getdata.php ---> สั่งไม่ให้เอาCache มาใช้
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
แต่มีบ้างครั้งเกิดเหตุการดังที่กว่ามาแล้ว ทางแก้ก็คือ เราต้องใส่ ค่า random ลงไปที่ url ของ php ตอนที่ XMLHttpRequest เข้ามาเพื่อให้ Browser มองว่าเป็นไฟล์ใหม่
ตัวอย่าง โค้ด Ajaxpage.html
 var xhReq = new XMLHttpRequest();
xhReq.open("GET", "Getdata.php?id=100", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse); // Show
เพิ่มค่า random ให้ดับ Getdata.php?id=100 ด้วยเป็น
"Getdata.php?id=100&"+rand=Math.rand();
หรือถ้าไฟล์ Ajaxpage.html เราสามารถให้ไฟล์ .php แทนก็สามาถใช้ php ส่งค่าไปตาม url แทนได้
เช่น
"Getdata.php?id=100&"+rand=<?php echo time(); ?>