25
Safari บน iOS 6 กำลังแคชผลลัพธ์ $ .ajax หรือไม่
ตั้งแต่การอัปเกรดเป็น iOS 6 เราเห็นว่ามุมมองทางเว็บของ Safari มีอิสระในการ$.ajaxโทรแคช นี่คือบริบทของแอปพลิเคชัน PhoneGap ดังนั้นจึงใช้ Safari WebView การ$.ajaxโทรของเราเป็นPOSTวิธีการและเราได้ตั้งค่าแคชเป็นเท็จ{cache:false}แต่ยังคงเกิดขึ้นอยู่ เราพยายามเพิ่ม a TimeStampไปยังส่วนหัวด้วยตนเองแต่มันก็ไม่ได้ช่วย เราได้ทำการวิจัยเพิ่มเติมและพบว่า Safari กำลังส่งคืนผลลัพธ์แคชสำหรับบริการบนเว็บที่มีลายเซ็นฟังก์ชั่นที่เป็นแบบคงที่เท่านั้นและไม่เปลี่ยนแปลงจากการโทรถึงการโทร ตัวอย่างเช่นลองนึกภาพฟังก์ชั่นที่เรียกว่า: getNewRecordID(intRecordType) ฟังก์ชั่นนี้ได้รับพารามิเตอร์อินพุตเดียวกันซ้ำแล้วซ้ำอีก แต่ข้อมูลที่ส่งคืนควรแตกต่างกันทุกครั้ง ต้องอยู่ในความรีบร้อนของ Apple เพื่อให้ iOS 6 zip พร้อมอย่างน่าประทับใจพวกเขามีความสุขกับการตั้งค่าแคช มีคนอื่นเห็นพฤติกรรมนี้ใน iOS 6 หรือไม่? ถ้าเป็นเช่นนั้นสิ่งที่ทำให้มันคืออะไร? วิธีแก้ปัญหาที่เราพบคือการแก้ไขลายเซ็นของฟังก์ชันให้เป็นดังนี้: getNewRecordID(intRecordType, strTimestamp) จากนั้นส่งผ่านTimeStampพารามิเตอร์เสมอและทิ้งค่านั้นในฝั่งเซิร์ฟเวอร์ วิธีนี้สามารถแก้ไขปัญหาได้ ฉันหวังว่านี่จะช่วยวิญญาณที่น่าสงสารคนอื่นที่ใช้เวลา 15 ชั่วโมงในเรื่องนี้เหมือนฉัน!