ตั้งแต่การอัปเกรดเป็น 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 ชั่วโมงในเรื่องนี้เหมือนฉัน!