Rumah >hujung hadapan web >tutorial js >Mengapa iOS 6 Safari Cache Panggilan $.ajax Saya Walaupun Dengan Pengepala `no-cache`?
iOS 6 Safari: Caching $.ajax Calls
Paparan web Safari dalam iOS 6 telah diperhatikan untuk cache $.ajax panggilan, malah apabila dinyatakan secara jelas untuk tidak. Tingkah laku pelik ini telah ditemui dalam konteks aplikasi PhoneGap, yang menggunakan Safari WebView.
Punca Isu Caching
Penyiasatan telah mendedahkan bahawa Safari menyimpan cache POST meminta itu kekurangan pengepala Cache-Control atau mengandungi pengepala "Cache-Control: max-age=0." Tingkah laku ini berpunca daripada tafsiran spesifikasi HTTP, yang menyatakan bahawa respons POST boleh dicache dengan pengepala yang sesuai.
Penyelesaian
Untuk mengelakkan caching, Cache-Control pengepala hendaklah ditetapkan kepada "tiada-cache." Ini boleh dicapai secara global dalam konfigurasi Apache menggunakan:
Header set Cache-Control "no-cache"
Untuk permintaan POST secara khusus, tetapan yang sama boleh digunakan menggunakan:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Sebagai alternatif, penyelesaian adalah dengan ubah suai tandatangan fungsi:
getNewRecordID(intRecordType, strTimestamp)
Dengan menambahkan parameter cap waktu pada tandatangan fungsi, permintaan berubah dengan berkesan dengan setiap panggilan, menghalang caching.
Atas ialah kandungan terperinci Mengapa iOS 6 Safari Cache Panggilan $.ajax Saya Walaupun Dengan Pengepala `no-cache`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!