Sejak peningkatan ke iOS 6, kami melihat tampilan web Safari mengambil kebebasan dari $.ajax
panggilan caching . Ini dalam konteks aplikasi PhoneGap sehingga menggunakan Safari WebView. $.ajax
Panggilan kami adalahPOST
metode dan cache disetel ke false {cache:false}
, tetapi ini masih terjadi. Kami mencoba menambahkan secara manual TimeStamp
ke header tetapi tidak membantu.
Kami melakukan lebih banyak riset dan menemukan bahwa Safari hanya mengembalikan hasil cache untuk layanan web yang memiliki fungsi tanda tangan yang statis dan tidak berubah dari panggilan ke panggilan. Misalnya, bayangkan fungsi yang disebut sesuatu seperti:
getNewRecordID(intRecordType)
Fungsi ini menerima parameter input yang sama berulang-ulang, tetapi data yang dikembalikan harus berbeda setiap waktu.
Harus terburu-buru Apple untuk membuat iOS 6 zip bersama mengesankan mereka terlalu senang dengan pengaturan cache. Adakah orang lain yang melihat perilaku ini di iOS 6? Jika demikian, apa sebenarnya penyebabnya?
Solusi yang kami temukan adalah mengubah tanda tangan fungsi menjadi sesuatu seperti ini:
getNewRecordID(intRecordType, strTimestamp)
dan kemudian selalu mengirimkan TimeStamp
parameter juga, dan hanya membuang nilai itu di sisi server. Ini mengatasi masalah ini. Saya harap ini membantu beberapa jiwa miskin lainnya yang menghabiskan 15 jam pada masalah ini seperti yang saya lakukan!