Safari บน iOS 6 มีการทำงานที่ไม่เหมือน Browser ตัวอื่นๆ ทำให้เกิดการแสดงผลผิดพลาด เนื่องจาก iOS 6 มีการเก็บค่าแคชของแต่ละหน้าไว้ไม่ว่าหน้านั้นจะถูกเรียกด้วย method get หรือ method post ก็ตามซึ่งโดยปกติ Browser ตัวอื่นจะเก็บค่าแคชเฉพาะหน้าที่เรียกด้วย method get เท่านั้น
ทำให้บน iOS 6 หน้าที่ถูกเรียกด้วย method post บางหน้าไม่ว่าจะเป็นการเรียกจาก form ปกติหรือเรียกผ่าน AJAX ก็ตามผลลัพธ์ที่ได้จะแสดงค่าผิดพลาดเพราะไม่ได้ไปดึงค่าล่าสุดที่เซิฟเวอร์ แต่ดึงค่าแคชที่เก็บไว้ในเครื่องขึ้นมาแทนเกิดปัญหาข้อมูลที่แสดงไม่อัพเดทล่าสุด
วิธีแก้มี 2 วิธีคือ
1. ใน form post เพิ่ม input ที่มีค่าเป็นวันที่และเวลาปัจจุบัน เข้าไปอีกหนึ่งตัวเพื่อให้ค่าที่ถูกส่งไปนั้นไม่ซ้ำกับของเดิมที่เคยส่งไปแล้ว หรือเป็นการหลอก Browser ว่าเป็นการเรียกของหน้าใหม่นั่นเอง
2. เพิ่ม tag กำหนด Cache-Control = no-cache เข้าไปที่ header ของทุกหน้าที่ต้องมีการดึงข้อมูลใหม่จากเซิฟเวอร์ เช่น
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
<head>
<title>tonnark.info</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”Cache-Control” content=”no-cache” />
</head>
<body>
………..
</body>
</html>
<head>
<title>tonnark.info</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”Cache-Control” content=”no-cache” />
</head>
<body>
………..
</body>
</html>
No comments:
Post a Comment