Rumah >hujung hadapan web >tutorial js >Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun Tetapan Kawalan Cache?
Safari Cache Conundrum dalam iOS 6
Pengenalan Safari dalam iOS 6 telah menimbulkan kebimbangan mengenai pengendalian cache untuk panggilan $.ajax. Khususnya, permintaan POST yang dibuat dalam aplikasi PhoneGap sedang dicache walaupun secara eksplisit menetapkan sifat cache kepada palsu.
Punca Punca
Selepas penyiasatan menyeluruh, didapati bahawa Safari secara selektif menyimpan POST berdasarkan kriteria berikut:
Selaras dengan spesifikasi HTTP, respons POST adalah secara amnya tidak boleh disimpan dalam cache. Walau bagaimanapun, Safari pada iOS 6 nampaknya mengeksploitasi peruntukan yang membenarkan caching dengan pengepala Cache-Control atau Expires yang sesuai.
Penyelesaian
Untuk menghalang Safari daripada menyimpan cache POST permintaan, adalah perlu untuk menetapkan "Cache-Control: no-cache" dalam pengepala respons. Ini memastikan Safari mematuhi arahan pintasan cache.
Untuk penyelesaian global yang digunakan pada semua POST, tambahkan kod berikut pada konfigurasi pelayan:
<code class="apache">Header set Cache-Control "no-cache"</code>
Jika anda hanya ingin melumpuhkan caching untuk POST tertentu, anda boleh menggunakan kod berikut:
<code class="apache">SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST</code>
Nota: Safari akan masih cache permintaan POST jika parameter permintaan kekal sama. Untuk mengelakkan caching, ubah suai parameter permintaan pada setiap panggilan. Sebagai alternatif, anda boleh menambahkan parameter rawak pada URL permintaan atau data POST untuk memastikan keunikan.
Atas ialah kandungan terperinci Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun Tetapan Kawalan Cache?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!