Rumah >hujung hadapan web >tutorial js >Mengapa iOS 6 Safari Cache Panggilan $.ajax Saya Walaupun Dengan Pengepala `no-cache`?

Mengapa iOS 6 Safari Cache Panggilan $.ajax Saya Walaupun Dengan Pengepala `no-cache`?

Susan Sarandon
Susan Sarandonasal
2024-11-05 04:18:02578semak imbas

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn